none
Script NTBackup RRS feed

  • 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.User

    Next

    '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") = 25

    objEmail.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.Send

    objEmail.From = "BACKUP@teste.com.br"
    objEmail.Subject = "Log NtBackup"
    objEmail.To = "teste2@teste.com.br"
    objEmail.Textbody = Body
    objEmail.Send


    Rombesso
    quinta-feira, 21 de julho de 2011 16:23

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
    segunda-feira, 25 de julho de 2011 12:50

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
    quinta-feira, 21 de julho de 2011 16:35
    Moderador
  • 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
    quinta-feira, 21 de julho de 2011 17:38
  • 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:00000001

    ref.: 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


    quinta-feira, 21 de julho de 2011 22:00
    Moderador
  • 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
    segunda-feira, 25 de julho de 2011 12:50
  • Boa sugestão Danilo..vou tentar implementar esse procedimento..
    Rombesso
    segunda-feira, 25 de julho de 2011 20:12
  • E ai deu certo Edgar?
    terça-feira, 26 de julho de 2011 16:44
  • Opa..sim Danilo..vlw
    Rombesso
    segunda-feira, 1 de agosto de 2011 14:26