MItch


220 Ready
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Script: archiviare e inviare via e-mail i logs di ntbackup

Se ne parla spesso della possibilità di inviare via e-mail i log di NTBackup, built-in questo non è possibile, però bastano poche righe di codice per poterlo fare.
Oggi leggendo l'ennesimo post sui newsgroup mi sono deciso a sistemare e pubblicare lo script che utilizzo da tempo.

Il sistema che utilizzo si divide in due script, un "DailyBackup.bat" e un "SendBackupLogs.vbs".
Il "DailyBackup.bat" contiene i comandi per eseguire ntbackup da command line e che alla fine di tutto richiamerà il secondo script "SendBackupLogs.vbs".
Questo VBScript ha il semplice compito di copiare ed inviare via e-mail i files di log generati da NTBackup.
Detto questo, è sufficiente copiare e modificare questi due script e creare un task schedulato che richiami il file DailyBackup.bat con un utente creato ad-hoc che sia membro *solo* del gruppo "Backup Operators".
Di seguito vediamo il codice degli scripts:

DailyBackup.bat (lo script cambia in base alle vostre necessità, questo è solamente un esempio)
set tapename="Hewlett Packard DAT72 drive"
set sleeptime=30

for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k-%%l
for /f "Tokens=1" %%i in ('time /t') do set tm=-%%i
set tm=%tm::=-%
set dtt=%dt%%tm%

rsm.exe refresh /LF%tapename%

sleep.exe %sleeptime%

ntbackup.exe backup "@C:\Scripts\DailyBackup.bks" /n "Daily Backup %dtt%" /v:yes /r:no /rs:no /hc:off /m normal /l:s /p "4mm DDS" /um

sleep.exe %sleeptime%

SendBackupLogs.vbs

exit

Questo script di esempio esegue un backup su nastro sulla libreria "Hewlett Packard DAT72 drive", per modificare questo script in base alle vostre esigenze vi invito a leggere l'help di NTBackup che è disponibile lanciando il comando ntbackup.exe /?

SendBackupLogs.vbs
'File: SendBackupLogs.vbs
'Autore: Michele Betelli (michele.betelli@mvps.org)
'Scopo: Archiviare e inviare via e-mail i logs di NTBackup

Option Explicit
Dim x
Dim fso,fsoFolder,fsoFiles,fsoFile
Dim LogPath,RegPath
Dim WSHShell
Dim FolderDestination
Dim Sender,Recipient,Subject,Body,SMTPServer
Dim tmpFile
Dim ArrAttachment()

'-------------------------------------------Parameters-------------------------------------------
FolderDestination = "C:\Logs\NTBackup"
SMTPServer = "exchange.dominio.lan"
Sender = "backup@dominio.it"
Recipient = "maintenance@dominio.it"
Subject = "Backup Scheduled Report"
Body = "Controllare il log allegato per verificare l'esito del backup!"
'------------------------------------------------------------------------------------------------
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

RegPath = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Local AppData"

LogPath = WSHShell.RegRead(RegPath)

LogPath = fso.BuildPath(LogPath, "Microsoft\Windows NT\NTBackup\Data")

LogPath = Replace(LogPath,"%USERPROFILE%",WshShell.ExpandEnvironmentStrings("%USERPROFILE%"))

Subject = WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")  & " - " & Subject
 
Set fsoFolder = fso.GetFolder(LogPath)
Set fsoFiles = fsoFolder.Files

x = 0
For Each fsoFile In fsoFiles
 If fso.GetExtensionName(fsoFile.name) = "log" Then
  x = x + 1
  tmpFile = fso.BuildPath(FolderDestination,WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")  & " - " & replace(date(),"/","-") & " - " & fsoFile.name)
  fsoFile.Copy (tmpFile)
  fso.DeleteFile fso.BuildPath(LogPath,fsoFile.name)
  Redim Preserve ArrAttachment(x)
  ArrAttachment(x) = tmpFile
 End If
Next

If IsArray(ArrAttachment) Then Send_MailCDO SMTPServer,Sender,Recipient,Subject,Body,ArrAttachment

Set fso = Nothing
Set fsoFolder = Nothing
Set fsoFiles = Nothing

Function Send_MailCDO(SMTPServer,Sender,Recipient,Subject,Text,ArrayAttachment)

 Dim objEmail
 Set objEmail = CreateObject("CDO.Message")
 
 objEmail.From = Sender
 objEmail.To = Recipient
 objEmail.Subject = Subject
 objEmail.Textbody = Text
 For x = 1 To Ubound(ArrayAttachment)
  objEmail.AddAttachment ArrayAttachment(x)
 Next
 objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
 objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
 objEmail.Configuration.Fields.Update
 objEmail.Send
 Set objEmail = Nothing
End Function

In questo script è necessario modificare solamente le variabili inserite nella sezione "Parameters", il nome della variabile identifica già il suo scopo.

Link utili:
http://www.microsoft.com/technet/technetmag/issues/2005/05/NTBackup/default.aspx
http://support.microsoft.com/kb/q239892/
http://www.jsifaq.com/SF/Tips/Tip.aspx?id=2265

Categoria: Scripting
martedì, 14 ago 2007 Ore. 11.14












aprile 2024
lmmgvsd
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
  • Views Home Page: 266.246
  • Views Posts: 481.088
  • Views Gallerie: 107.598
  • n° Posts: 188
  • n° Commenti: 122
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003