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