Registrazione    Accedi
 
Windows Server 2003: Archiviare e Inviare via e-mail i logs di NTBackup Windows Server 2003: Archiviare e Inviare via e-mail i logs di NTBackup  

 Autore: Michele Betelli
 Pubblicato il: 10 settembre 2007
 Livello: Base

Introduzione
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.

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.

Spiegazione
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

Condizioni d'uso  |  Privacy  |  Copyright 2007 - WindowServer.it | PI 02988870123