none
SCRIPT DE MONITORAMENTO RRS feed

  • Pergunta

  • Bom dia pessoal,

        Alguém pode me ajudar, estou precisando de alguns scripts que façam os seguintes monitoramentos:

    1- verifique espaço em disco e se estiver abaixo do programado enviar um e-mail para o analista.

    2- verificar um arquivo txt por data, tipo, eu tenho um backup feito pelo robocopy que me gera um txt diário, queria saber quando esse txt não for gerado.

    3- ou algum script que gere um log informando que o arquivo txt está sendo gerado normalmente

    Agradeço a atenção de todos vocês.


    Mauro Sérgio
    sexta-feira, 27 de março de 2009 12:11

Respostas

  • Olá,

    Segue o script para arquivo (o anterior varria uma pasta inteira)

    Path = "C:\informa.txt"
    strdata = 2 'QUANTIDADE DE DIAS ANTERIOR PARA VALIDAR O ARQUIVO

    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Set Arquivo = ObjFSO.GetFile(Path)
     
    If Not ObjFSO.FileExists(Path) Then
      WriteLog Path & " - não é uma pasta válida(A pasta não existe)."
      WScript.Quit
    End If

    if DateDiff("d",Arquivo.datecreated,now) > strdata Then
        wscript.echo "O arquivo " & Arquivo.name & " é mais antigo(s) que " & CStr(strData) &" dias. será enviado email"
        Envia_Alerta Arquivo.name
    Else
        wscript.echo "O arquivo " & Arquivo.name & " não é mais antigo(s) que " & CStr(strData) &" dias. não será enviado email"
    End if


    Sub Envia_Alerta(strArquivo)
    Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "servidor@contoso.msft"
     objEmail.To = "jesiel@nwtraders.msft"

     objEmail.Subject = "ALERTA DE FALTA DE ARQUIVO"
     objEmail.TextBody = "ARQUIVO EM FALTA:" & strArquivo

     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub

    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique a resposta
    • Marcado como Resposta mauroserggio sexta-feira, 27 de março de 2009 20:29
    sexta-feira, 27 de março de 2009 17:47
  • Olá,

    Está correto, tente o script abaixo: (verifique se o IP que você está colocando está aberto)

    Dim strNome

    'CONSTANTES NAO ALTERAR
    Const HARD_DISK = 3
    strComputer = "."

    'COLOQUE A PORCENTAGEM LIMITE
    nLimite = 30

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

    For Each objItem In colItems
      strNome =  objItem.Name
    Next

    Set colDisks = objWMIService.ExecQuery _
        ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")

    For Each objDisk in colDisks
        wscript.echo  (objDisk.FreeSpace * 100) /objDisk.Size
        if (objDisk.FreeSpace * 100) /objDisk.Size < nLimite Then
         wscript.echo "ultrapassou o limite, será enviado email"  
            Envia_Alerta (objDisk.FreeSpace * 100) /objDisk.Size
        Else
         wscript.echo "Nao ultrapassou o limite, nao envia email"  
        End if
    Next



    Sub Envia_Alerta(nEspaco)
     Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "suporte@verdesmares.com.br"
     objEmail.To = "maurosergio@diariodonordeste.com.br"

     objEmail.Subject = "ALERTA DE UTILIZAÇAO DE DISCO COMPUTADOR " & strNome
     objEmail.TextBody = "ESPAÇO EM DISCO: " & nEspaco
     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub


    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique a resposta
    • Marcado como Resposta mauroserggio sexta-feira, 27 de março de 2009 20:28
    sexta-feira, 27 de março de 2009 17:57

Todas as Respostas

  • Olá,

    Para verificar o HD, segue o script abaixo:

    Dim strNome

    'CONSTANTES NAO ALTERAR
    Const HARD_DISK = 3
    strComputer = "."

    'COLOQUE A PORCENTAGEM LIMITE
    nLimite = 30

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

    For Each objItem In colItems
      strNome =  objItem.Name
    Next

    Set colDisks = objWMIService.ExecQuery _
        ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")

    For Each objDisk in colDisks
        wscript.echo  (objDisk.FreeSpace * 100) /objDisk.Size
        if (objDisk.FreeSpace * 100) /objDisk.Size < nLimite Then
       
            Envia_Alerta (objDisk.FreeSpace * 100) /objDisk.Size
        End if
    Next




    Sub Envia_Alerta(nEspaco)
    wscript.echo nEspaco
     Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "servidor@contoso.msft"
     objEmail.To = "jesiel@nwtraders.msft"

     objEmail.Subject = "ALERTA DE UTILIZAÇAO DE DISCO COMPUTADOR " & strNome
     objEmail.TextBody = "Computador: " & strNome & " Disco: " & objDisk.DeviceID & "Espaço Disponivel: " & nEspaco & " %"

     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.10.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub


    Altere os endereços de email, o ip do servidor smtp e a porcentagem que você quer.

    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique a resposta
    sexta-feira, 27 de março de 2009 16:24
  • Olá,

    Segue abaixo o script para validar a data de criação de um arquivo:

    Option Explicit


    Dim Path
    Dim ObjFSO, Folder, MyFiles, MySubFolders, MyFolder
    Dim ArqData, strData


    On error resume next

    Path = "C:\teste"
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    strdata = 2 'QUANTIDADE DE DIAS ANTERIOR PARA VALIDAR O ARQUIVO

    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Set Folder = ObjFSO.GetFolder(Path)
    Set MyFiles = Folder.files
     
    If Not ObjFSO.FolderExists(Path) Then
      WriteLog Path & " - não é uma pasta válida(A pasta não existe)."
      WScript.Quit
    End If
    i=0

    IF MyFiles.Count <> 0 Then
     For Each MyFiles in Folder.Files
    wscript.echo DateDiff("d",myfiles.datecreated,now)
      if DateDiff("d",myfiles.datecreated,now) > strdata Then
         wscript.echo "O arquivo " & myfiles.name & " é mais antigo(s) que " & CStr(strData) &" dias"

       End if
     Next
    end if




    Se você quer mandar um email, basta pegar a funçao Envia_Alerta script anterior que eu fiz e adicionar onde está a linha:
    wscript.echo "O arquivo " & myfiles.name & " é mais antigo(s) que " & CStr(strData) &" dias"

    Até mais,

    Jesiel

    Obs.: Se útil, classifique

    sexta-feira, 27 de março de 2009 16:38
  • olá Jasiel, obrigado plor responder, olha, fiz como você falou mas não estou recebendo nenhuma mensagem, estou ancaminhando o script para que vc possa analisar e me dizer onde estou errando: vale lembrar que o arquivo que estou monitorando é um txt

    Option Explicit


    Dim Path
    Dim ObjFSO, Folder, MyFiles, MySubFolders, MyFolder
    Dim ArqData, strData


    On error resume next

    Path = "C:\informa.txt"
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    strdata = 2 'QUANTIDADE DE DIAS ANTERIOR PARA VALIDAR O ARQUIVO

    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Set Folder = ObjFSO.GetFolder(Path)
    Set MyFiles = Folder.files
     
    If Not ObjFSO.FolderExists(Path) Then
      WriteLog Path & " - não é uma pasta válida(A pasta não existe)."
      WScript.Quit
    End If
    i=0

    IF MyFiles.Count <> 0 Then
     For Each MyFiles in Folder.Files
    wscript.echo DateDiff("d",myfiles.datecreated,now)
      if DateDiff("d",myfiles.datecreated,now) > strdata Then
         wscript.echo "O arquivo " & myfiles.name & " é mais antigo(s) que " & CStr(strData) &" dias"
    wscript.echo
    Set objEmail = CreateObject("CDO.Message")
    objEmail.From = "atendimento@verdesmares.com.br"
    objEmail.To = "suporte@verdesmares.com.br"
    objEmail.Subject = "Monitor Servidor GVM"
    objEmail.Textbody = "arquivo atualizado com sucesso."
    objEmail.Send
       End if
     Next
    end if

    sexta-feira, 27 de março de 2009 17:02
  • o script do disco funciona mas não consigo receber e-mail sobre a informação segue o modelo

    Dim strNome

    'CONSTANTES NAO ALTERAR
    Const HARD_DISK = 3
    strComputer = "."

    'COLOQUE A PORCENTAGEM LIMITE
    nLimite = 30

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

    For Each objItem In colItems
      strNome =  objItem.Name
    Next

    Set colDisks = objWMIService.ExecQuery _
        ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")

    For Each objDisk in colDisks
        wscript.echo  (objDisk.FreeSpace * 100) /objDisk.Size
        if (objDisk.FreeSpace * 100) /objDisk.Size < nLimite Then
       
            Envia_Alerta (objDisk.FreeSpace * 100) /objDisk.Size
        End if
    Next




    Sub Envia_Alerta(nEspaco)
    wscript.echo nEspaco
     Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "suporte@verdesmares.com.br"
     objEmail.To = "maurosergio@diariodonordeste.com.br"

     objEmail.Subject = "ALERTA DE UTILIZAÇAO DE DISCO COMPUTADOR " & strNome
     objEmail.TextBody = "Computador: " & strNome & " Disco: " & objDisk.DeviceID & "Espaço Disponivel: " & nEspaco & "

    %"

     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxx.xxx.xxx.xxx" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub

    sexta-feira, 27 de março de 2009 17:06
  • Olá,

    Segue o script para arquivo (o anterior varria uma pasta inteira)

    Path = "C:\informa.txt"
    strdata = 2 'QUANTIDADE DE DIAS ANTERIOR PARA VALIDAR O ARQUIVO

    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Set Arquivo = ObjFSO.GetFile(Path)
     
    If Not ObjFSO.FileExists(Path) Then
      WriteLog Path & " - não é uma pasta válida(A pasta não existe)."
      WScript.Quit
    End If

    if DateDiff("d",Arquivo.datecreated,now) > strdata Then
        wscript.echo "O arquivo " & Arquivo.name & " é mais antigo(s) que " & CStr(strData) &" dias. será enviado email"
        Envia_Alerta Arquivo.name
    Else
        wscript.echo "O arquivo " & Arquivo.name & " não é mais antigo(s) que " & CStr(strData) &" dias. não será enviado email"
    End if


    Sub Envia_Alerta(strArquivo)
    Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "servidor@contoso.msft"
     objEmail.To = "jesiel@nwtraders.msft"

     objEmail.Subject = "ALERTA DE FALTA DE ARQUIVO"
     objEmail.TextBody = "ARQUIVO EM FALTA:" & strArquivo

     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub

    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique a resposta
    • Marcado como Resposta mauroserggio sexta-feira, 27 de março de 2009 20:29
    sexta-feira, 27 de março de 2009 17:47
  • Olá,

    Está correto, tente o script abaixo: (verifique se o IP que você está colocando está aberto)

    Dim strNome

    'CONSTANTES NAO ALTERAR
    Const HARD_DISK = 3
    strComputer = "."

    'COLOQUE A PORCENTAGEM LIMITE
    nLimite = 30

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

    For Each objItem In colItems
      strNome =  objItem.Name
    Next

    Set colDisks = objWMIService.ExecQuery _
        ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")

    For Each objDisk in colDisks
        wscript.echo  (objDisk.FreeSpace * 100) /objDisk.Size
        if (objDisk.FreeSpace * 100) /objDisk.Size < nLimite Then
         wscript.echo "ultrapassou o limite, será enviado email"  
            Envia_Alerta (objDisk.FreeSpace * 100) /objDisk.Size
        Else
         wscript.echo "Nao ultrapassou o limite, nao envia email"  
        End if
    Next



    Sub Envia_Alerta(nEspaco)
     Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "suporte@verdesmares.com.br"
     objEmail.To = "maurosergio@diariodonordeste.com.br"

     objEmail.Subject = "ALERTA DE UTILIZAÇAO DE DISCO COMPUTADOR " & strNome
     objEmail.TextBody = "ESPAÇO EM DISCO: " & nEspaco
     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub


    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique a resposta
    • Marcado como Resposta mauroserggio sexta-feira, 27 de março de 2009 20:28
    sexta-feira, 27 de março de 2009 17:57
  • Muito Obrigado, os scripts funcionaram como eu queria, só que fica aparecendo uma pop-up o tempo todo na tela e isso vai ficar remoto, tem como tirar essa pop-up? no resto está perfeito, muito obrigado por sua ajuda..
    sexta-feira, 27 de março de 2009 20:28
  • Olá,

    É, eu coloquei só para testar....

    Basta você deletar as linhas que tiver a função wscript.echo

    Ou coloque um apóstrofo no começo da linha (')

    Até mais,

    Jesiel
    sexta-feira, 27 de março de 2009 23:24