SCOM 2007 : Script test ping

 
Script to test ping response time and change state
 
Ce script permet de tester le temps de réponse au ping d’un device, et de modifier l’état : warning si depassement de seuil, erreur si non réponse :
 
Arg 0 = @IP
Arg 1 = Nb Ping
Arg 2 = warning
Arg 3 = Nb Ping pour echec
 
 
 
 
 
 

Option Explicit

 

  

Dim strTargetComputer

Dim strTimeToPing

Dim intSeuilAvertissement

Dim intNbPing

Dim intSeuilPingEchec

Dim intNbPingEchec

Dim intI

Dim intTimeToPing

Dim intMoyenneTempsPing

Dim oArgs

Dim strState

Dim StateDataType

Dim oAPI, oBag

 

  

Set oAPI = CreateObject("MOM.ScriptAPI")

Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)

 

Set oArgs = WScript.Arguments

if oArgs.Count < 4 Then

                        Call oAPI.LogScriptEvent("TestPing.vbs",101,0,"Arg Error.")

                        Wscript.Quit -1

End If

strTargetComputer = oArgs(0)

intNbPing = oArgs(1)

intSeuilAvertissement = Cint(oArgs(2))

intSeuilPingEchec = Cint(oArgs(3))

 

intTimeToPing =0

intMoyenneTempsPing = 0

intNbPingEchec = 0

 

For intI=1 to intNbPing

                        Dim objPing, objStatus

                        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._

                            ExecQuery("select * from Win32_PingStatus where address = ‘"_

                                & strTargetComputer & "’")

                        For Each objStatus in objPing

                            If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then

                                intNbPingEchec = intNbPingEchec + 1

                            Else

                            intTimeToPing = intTimeToPing + objStatus.ResponseTime

                            End If

                        Next

Next

 

if intNbPingEchec >= intSeuilPingEchec then

    strState = "ERROR"

    Else

    If intNbPing-intNbPingEchec = 0 Then

        strState = "ERROR"

        Else

        intMoyenneTempsPing = intTimeToPing / (intNbPing-intNbPingEchec)

        If intMoyenneTempsPing < intSeuilAvertissement then strState = "OK"

        If intMoyenneTempsPing >= intSeuilAvertissement then strState = "WARNING"

    End if

End if

 

If strState = "OK" then

                        Call oBag.AddValue("State","OK")

                        Call oAPI.Return(oBag) 

End If

 

If strState = "WARNING" then

                        Call oBag.AddValue("State","WARNING")

                        Call oAPI.Return(oBag) 

End If

 

If strState = "ERROR" then

                        Call oBag.AddValue("State","ERROR")

                        Call oAPI.Return(oBag) 

End If

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :