none
Ping envia alerta por e-mail RRS feed

  • Pergunta

  • Pessoal, preciso alterar a script abaixo, ela funciona da seguinte forma: Ao pingar num determinado host ele dispara e-mail, acontece que se configurado pra verificar a cada 1 minuto ele dispara e-mail a cada 1 minuto, precisava deixar ele verificando a cada 1 minuto e caso não estiver respondendo ele dispara e-mail uma vez só, mas preciso que verifique a cada 1 minuto! assim que voltar a responder caso pare novamente ele dispara e-mail

    Acredito que a lógica seria a seguinte, criar uma variavel e atribuir um valor "0" (up), na proxima verificação não responder disparar e-mail e atribuir valor "1" (down) e continuar verificando. caso a variavel volte a valor 0 só ira disparar e-mail quando ela for atribuir valor "1" novamente... ou algo do tipo!

    strComputer = "."
    nCont = 0
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '172.0.0.100'")
    Do
       For Each objStatus in colPings
           If IsNull(objStatus.StatusCode) _
              or objStatus.StatusCode<>0 Then
           nCont = nCont + 1
           End If
           if nCont >= 3 Then
               EnviaMail
               nCont = 0
           End if
       Next
     'EXECUTAR A CADA 1 MINUTO
      wscript.sleep (1800)
    Loop
    
    
    Sub EnviaMail
    
    Dim objMail, sComputerName, oNetwork
    
      Set oNetwork = CreateObject("WScript.Network")
      sComputerName = oNetwork.ComputerName
    
      Set objMail = CreateObject("CDO.Message")
      objMail.From = origem@mail.com.br
      objMail.To = destino@mail.com.br
      objMail.Subject = sComputerName & " --> Acabou energia"
      objMail.TextBody = ""
    
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "172.0.0.200"
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
      objMail.Configuration.Fields.Update
      objMail.Send
    
      Set objMail = Nothing
    
    End sub




    terça-feira, 2 de julho de 2013 12:35

Respostas

  • Pessoal, preciso alterar a script abaixo, ela funciona da seguinte forma: Ao pingar num determinado host ele dispara e-mail, acontece que se configurado pra verificar a cada 1 minuto ele dispara e-mail a cada 1 minuto, precisava deixar ele verificando a cada 1 minuto e caso não estiver respondendo ele dispara e-mail uma vez só, mas preciso que verifique a cada 1 minuto! assim que voltar a responder caso pare novamente ele dispara e-mail

    Acredito que a lógica seria a seguinte, criar uma variavel e atribuir um valor "0" (up), na proxima verificação não responder disparar e-mail e atribuir valor "1" (down) e continuar verificando. caso a variavel volte a valor 0 só ira disparar e-mail quando ela for atribuir valor "1" novamente (só disparar e-mail quando a variavel for atribuir valor"1")... ou algo do tipo!

    strComputer = "."
    nCont = 0
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '172.0.0.100'")
    Do
       For Each objStatus in colPings
           If IsNull(objStatus.StatusCode) _
              or objStatus.StatusCode<>0 Then
           nCont = nCont + 1
           End If
           if nCont >= 3 Then
               EnviaMail
               nCont = 0
           End if
       Next
     'EXECUTAR A CADA 1 MINUTO
      wscript.sleep (1800)
    Loop


    Sub EnviaMail

    Dim objMail, sComputerName, oNetwork

      Set oNetwork = CreateObject("WScript.Network")
      sComputerName = oNetwork.ComputerName

      Set objMail = CreateObject("CDO.Message")
      objMail.From = origem@mail.com.br
      objMail.To = destino@mail.com.br
      objMail.Subject = sComputerName & " --> Acabou energia"
      objMail.TextBody = ""

      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "172.0.0.200"
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
      objMail.Configuration.Fields.Update
      objMail.Send

      Set objMail = Nothing

    End sub


    terça-feira, 2 de julho de 2013 12:37
  • Antonio !

    Esse link com o script abaixo resolve seu problema.

    http://gallery.technet.microsoft.com/scriptcenter/d0670079-6158-4dc5-a9da-b261c70e4b7d

    terça-feira, 2 de julho de 2013 13:45

Todas as Respostas

  • Pessoal, preciso alterar a script abaixo, ela funciona da seguinte forma: Ao pingar num determinado host ele dispara e-mail, acontece que se configurado pra verificar a cada 1 minuto ele dispara e-mail a cada 1 minuto, precisava deixar ele verificando a cada 1 minuto e caso não estiver respondendo ele dispara e-mail uma vez só, mas preciso que verifique a cada 1 minuto! assim que voltar a responder caso pare novamente ele dispara e-mail

    Acredito que a lógica seria a seguinte, criar uma variavel e atribuir um valor "0" (up), na proxima verificação não responder disparar e-mail e atribuir valor "1" (down) e continuar verificando. caso a variavel volte a valor 0 só ira disparar e-mail quando ela for atribuir valor "1" novamente (só disparar e-mail quando a variavel for atribuir valor"1")... ou algo do tipo!

    strComputer = "."
    nCont = 0
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '172.0.0.100'")
    Do
       For Each objStatus in colPings
           If IsNull(objStatus.StatusCode) _
              or objStatus.StatusCode<>0 Then
           nCont = nCont + 1
           End If
           if nCont >= 3 Then
               EnviaMail
               nCont = 0
           End if
       Next
     'EXECUTAR A CADA 1 MINUTO
      wscript.sleep (1800)
    Loop


    Sub EnviaMail

    Dim objMail, sComputerName, oNetwork

      Set oNetwork = CreateObject("WScript.Network")
      sComputerName = oNetwork.ComputerName

      Set objMail = CreateObject("CDO.Message")
      objMail.From = origem@mail.com.br
      objMail.To = destino@mail.com.br
      objMail.Subject = sComputerName & " --> Acabou energia"
      objMail.TextBody = ""

      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "172.0.0.200"
      objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
      objMail.Configuration.Fields.Update
      objMail.Send

      Set objMail = Nothing

    End sub


    terça-feira, 2 de julho de 2013 12:37
  • Antonio !

    Esse link com o script abaixo resolve seu problema.

    http://gallery.technet.microsoft.com/scriptcenter/d0670079-6158-4dc5-a9da-b261c70e4b7d

    terça-feira, 2 de julho de 2013 13:45