Usuário com melhor resposta
Script NTBackup

Pergunta
-
Galera,
Tenho o seguinte script abaixo e esta funcionando, porém, queria fazer uma alteração nele..
Ele faz o backup em uma fita DAT, grava no event viewer o resultado do backup, aguarda o backup finalizar e manda via e-mail uma notificação contendo o resultado do event viewer para um email determinado.
O que eu queria alterar é para que ao invés de ser enviado por e-mail o resultado do event viewer, ele efetuasse o envio do conteúdo existente no log do backup do NTBackup que é gerado no momento que o mesmo finaliza. Em todo caso, esse log fica armazenado no seguinte local:
C:\Documents and Settings\%username%\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup01.log
Teria como???
strComputer = "."
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objShell = Wscript.CreateObject("Wscript.Shell")'Inicia o backup
DateInfo = """" & Now & """"
Filecfg = "@C:\backup_diario.bks"
Opts = " /v:no /r:no /rs:no /hc:on /m normal /l:s"
Name = " backup"
Midia = """LTO Ultrium"""Command = "ntbackup.exe backup " & Filecfg & " /n " & DateInfo & " /d " & DateInfo & Opts & " /j " & Name & " /p " & Midia & " /UM "
objShell.Run "cmd /c " & Command
'### Aguarda o Backup finalizar ###
Repete = 0
Do While Repete = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = 'ntbackup.exe'")
If colProcesses.Count = 0 Then
Repete = 1
Else
WScript.Sleep 5000
End If
Loop'### Coleta informacoes do event viewer ###
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'Application' and " _
& "EventCode = '8019'")For Each objEvent in colLoggedEvents
Body = "Computer Name: " & objEvent.ComputerName & vbcrlf
Body = Body & "Event Code: " & objEvent.EventCode & vbcrlf
Body = Body & "Message: " & objEvent.Message & vbcrlf
Body = Body & "Event Type: " & objEvent.Type & vbcrlf
Body = Body & "User: " & objEvent.UserNext
'wscript.echo body
'### Envia o e-mail ###Set objEmail = CreateObject("CDO.Message")
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.intranet.teste.com.br"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "teste@teste.com.br"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "teste123"
objEmail.Configuration.Fields.Update
objEmail.From = "BACKUP@teste.com.br"
objEmail.Subject = "Log NtBackup"
objEmail.To = "teste@teste.com.br"
objEmail.Textbody = Body
objEmail.SendobjEmail.From = "BACKUP@teste.com.br"
objEmail.Subject = "Log NtBackup"
objEmail.To = "teste2@teste.com.br"
objEmail.Textbody = Body
objEmail.Send
Rombesso
Respostas
-
Amigo,
Tente fazer o seguinte:
Primeiro passo crie um diretório que vc possa armazenar os logs antigos,
Segundo passo no começo do script, crie um função de move, *.log para o novo diretório.
Terceiro passo use a sintaxe C:\Documents and Settings\<coloque o nome do usuario aqui>\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup01.log conforme recomendado pelo nosso amigo acima.
Quarto passo ao invés de anexar um arquivo especifico deixe como anexo todos arquivos *.log
Espero ter ajudado..
- Marcado como Resposta Richard Juhasz sexta-feira, 29 de julho de 2011 19:35
Todas as Respostas
-
Veja este link: http://www.paulsadowski.com/wsh/cdo.htm
De acordo com o artigo vc utilizaria:
objEmail.AddAttachment "C:\Documents and Settings\<coloque o nome do usuario aqui>\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup01.log"
Fábio de Paula Junior -
Legal Fabio,
Isso resolve 90% do meu problema...porém, não posso ter um nome fixo de arquivo...cada vez que o NTBackup finaliza um backup, ele gera um arquivo de log no formato "backup01.log" então...ao rodar o próximo backup, ele vai gerar o arquivo "backup02.log", "backup03.log" e assim sucessivamente...
Preciso que ele pegue o arquivo gerado correspondente ao backup feito...tem como?
Rombesso -
Edgar,
Tenho duas sugestões:
1)Alterar a quantidade de arquivos de log (mais fácil)
Altere o valor da chave de registro para "1" (o padrão é 10 - "A" hexadecimal) assim ele sempre vai gerar o mesmo arquivo backup01.log
[HKEY_CURRENT_USER\Software\Microsoft\Ntbackup\Log Files]
"Log File Count"=dword:00000001ref.: http://support.microsoft.com/kb/241162
2) Adicionar no seu script uma rotina que verifique qual o último arquivo gerado no diretório dos logs (mais dificil e tem o risco de ocorrer algum backup simultaneo e o script pegar o arquivo errado.)
ref.: http://www.ureader.com/msg/1677440.aspx
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator quinta-feira, 21 de julho de 2011 22:00
-
Amigo,
Tente fazer o seguinte:
Primeiro passo crie um diretório que vc possa armazenar os logs antigos,
Segundo passo no começo do script, crie um função de move, *.log para o novo diretório.
Terceiro passo use a sintaxe C:\Documents and Settings\<coloque o nome do usuario aqui>\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup01.log conforme recomendado pelo nosso amigo acima.
Quarto passo ao invés de anexar um arquivo especifico deixe como anexo todos arquivos *.log
Espero ter ajudado..
- Marcado como Resposta Richard Juhasz sexta-feira, 29 de julho de 2011 19:35
-
-
-