Teste l'état du site Web en vérifiant le code de réponse http. En cas d'échec, un conteneur de propriétés est renvoyé avec un message d'erreur dont les informations seront utilisées par la sonde dans le message d'alerte.
'*************************************************************************
' $ScriptName: "Microsoft.SystemCenter.WebInterfaceWatcherMonitoring" $
'
' Purpose: This script runs a url checks to validate if a website is up and running.
'
' $File: Microsoft.SystemCenter.WebInterfaceWatcherMonitoring.vbs $
'*************************************************************************
Dim oAPI, oBagState
Dim oParams, bLogSuccessEvent
Dim strMonitorStatus, strErrorDetail, strMessage
Dim dtStart
Dim TargetServer, TargetSite, strStatus, intStatus, UserName, UserPassword
Dim objIIS, objWMIService, colItems, objItem
Dim strWebsite, strStatusText
dtStart = Now
Set oAPI = MomCreateObject("Mom.ScriptAPI")
Set oParams = WScript.Arguments
if oParams.Count < 2 then
strMessage = "The script '" & SCRIPT_NAME & "' didn't execute successfully because some parameters were missing: Param Count(" & CStr(oParams.Count) & ")"
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessage
Wscript.Quit -1
End if
strMonitorStatus = "0"
Set oBagState = oAPI.CreateTypedPropertyBag(StateDataType)
GetMonitorStatus
Sub GetMonitorStatus()
Dim e
Dim sWBState, ObjWebSite
Dim boolStatus
Set e = New Error
e.Clear
On Error Resume Next
boolStatus = PingSite(TargetSite)
If boolStatus = true Then
call ReturnResponse(false, "")
Else
strErrorDetail = SCRIPT_NAME & ": - WebSite " & TargetSite & " Failure on Server " & TargetServer & " Error Detail: " & strStatusText
call ReturnResponse(true, strErrorDetail)
End If
End Sub
'---------------------------------------------------------------------------
' Retrieves the script output.
'---------------------------------------------------------------------------
Sub ReturnResponse(boolErrorFlag, strMessage)
If boolErrorFlag = true Then
oBagState.AddValue "State", "0"
oBagState.AddValue "ErrorDetail", strMessage
Else
strMessage = "The script '" & SCRIPT_NAME & "' completed successfully in " & _
DateDiff("s", dtStart, Now) & " seconds."
oBagState.AddValue "State", "1"
oBagState.AddValue "ErrorDetail", ""
End If
If bLogSuccessEvent Then
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessage
End If
oAPI.AddItem oBagState
Call oAPI.ReturnItems
WScript.Quit
End Sub
Sub CreateEvent(lEventID, lEventType, strMessage)
oAPI.LogScriptEvent SCRIPT_NAME,lEventID, lEventType, strMessage
End Sub
Function MomCreateObject(ByVal sProgramId)
Dim oError, strErrorMsg
Set oError = New Error
On Error Resume Next
Set MomCreateObject = CreateObject(sProgramId)
oError.Save
On Error Goto 0
If oError.Number <> 0 Then
strErrorMsg = "Unable to create automation object '" & sProgramId & "' " & oError.Description
call ReturnResponse(true, strErrorMsg)
End If
End Function
Function PingSite( myWebsite )
Dim intStatus, objHTTP
Dim oError
Set oError = New Error
On Error Resume Next
If bLogSuccessEvent Then
strMessage = "Return Status " & CStr(intStatus)
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessage
End If
On Error Goto 0
If oError.Number <> 0 Then
strMessage = "Error " & CStr(oError.Number)
call ReturnResponse(true, strMessage)
End If
If intStatus = 200 Or intStatus = 401 Or intStatus = 403 Or intStatus = 407 Then
PingSite = True
Else
If IsEmpty(intStatus) = true Then
strStatusText = "IIS Down or unavailable"
else
strStatusText = objHTTP.StatusText
End If
PingSite = False
End If
Set objHTTP = Nothing
End Function
Class Error
Private m_lNumber
Private m_sSource
Private m_sDescription
Private m_sHelpContext
Private m_sHelpFile
Public Sub Save()
m_lNumber = Err.number
m_sSource = Err.Source
m_sDescription = Err.Description
m_sHelpContext = Err.HelpContext
m_sHelpFile = Err.helpfile
End Sub
Public Sub Raise()
Err.Raise m_lNumber, m_sSource, m_sDescription, m_sHelpFile, m_sHelpContext
End Sub
Public Sub Clear()
m_lNumber = 0
m_sSource = ""
m_sDescription = ""
m_sHelpContext = ""
m_sHelpFile = ""
End Sub
Public Default Property Get Number()
Number = m_lNumber
End Property
Public Property Get Source()
Source = m_sSource
End Property
Public Property Get Description()
Description = m_sDescription
End Property
Public Property Get HelpContext()
HelpContext = m_sHelpContext
End Property
Public Property Get HelpFile()
HelpFile = m_sHelpFile
End Property
End Class </Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="Script">
<Node ID="PassThrough"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
<TriggerOnly>true</TriggerOnly>
</ProbeActionModuleType>