Compruebe el estado del sitio web al comprobar el código de respuesta http. En caso de error, se envía un contenedor de propiedades con un mensaje detallado sobre el error que se utilizará en el mensaje de alerta emitido por la prueba.
'*************************************************************************
' $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, SetProxyDirectValue
Dim objIIS, objWMIService, colItems, objItem
Dim strWebsite, strStatusText
dtStart = Now
Set oAPI = MomCreateObject("Mom.ScriptAPI")
Set oParams = WScript.Arguments
if oParams.Count < 4 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"
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 , SetProxyDirectValue )
Dim intStatus, objHTTP
Dim oError
Set oError = New Error
On Error Resume Next
Set objHTTP = MomCreateObject( "WinHttp.WinHttpRequest.5.1" )
objHTTP.Open "GET", myWebsite, False
objHTTP.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MyApp 1.0; Windows NT 5.1)"
If SetProxyDirectValue Then
objHTTP.SetProxy(1)
End If
objHTTP.SetTimeouts WinHttpTimeOut_ResolveTimeout, WinHttpTimeOut_ConnectTimeout, WinHttpTimeOut_SendTimeout, WinHttpTimeOut_ReceiveTimeout
objHTTP.Option(WinHttpRequestOption_UserAgentString) = HTTPREQUEST_USERAGENTSTRING
objHTTP.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = HTTPREQUEST_SSLERRORIGNOREFLAGS
objHTTP.Option(WinHttpRequestOption_EnableRedirects) = HTTPREQUEST_ENABLEREDIRECTS
objHTTP.Option(WinHttpRequestOption_EnableHttpsToHttpRedirects) = HTTPREQUEST_ENABLEHTTPSTOHTTPREDIRECT
objHTTP.Send
intStatus = objHTTP.Status
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>