76 lines
1.6 KiB
PowerShell
76 lines
1.6 KiB
PowerShell
<#
|
|
Ester Niclos Ferreras
|
|
|
|
Checks IIS Site state
|
|
|
|
OK - started
|
|
CRITICAL - STOPPED
|
|
UNKNOWN - not found
|
|
|
|
|
|
#>
|
|
|
|
|
|
#
|
|
# Shell arguments
|
|
#
|
|
[CmdletBinding()]
|
|
Param(
|
|
[Parameter(Mandatory=$True,Position=1)]
|
|
[string]$website
|
|
)
|
|
|
|
$bReturnOK = $TRUE
|
|
$bReturnCritical = $FALSE
|
|
$bReturnWarning = $FALSE
|
|
|
|
$returnStateOK = 0
|
|
$returnStateWarning = 1
|
|
$returnStateCritical = 2
|
|
$returnStateUnknown = 3
|
|
|
|
$DataTexte = ""
|
|
$strCritical = ""
|
|
$strWarning = ""
|
|
|
|
[System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" ) > $null
|
|
|
|
$servermanager = [Microsoft.Web.Administration.ServerManager]::OpenRemote("localhost")
|
|
$site = $servermanager.Sites["$website"]
|
|
$iis = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring
|
|
|
|
# Nagios output
|
|
|
|
$resultstring="IISSITE UNKNOWN $website not found"
|
|
$exit_code = $UNKNOWN
|
|
|
|
If ($site -ne $null) {
|
|
|
|
$status= $site.State
|
|
|
|
If ($status -eq "Started") {
|
|
$str = 'OK ' + $website + ' ' + $status + '-' + $iis.setupstring
|
|
}
|
|
Elseif ($status -eq $null) {
|
|
$strWarning = "UNKNOWN $website exists, but has no state. Check it is not a FTP site."
|
|
$bReturnWarning = $TRUE
|
|
}
|
|
Else {
|
|
$strCritical = 'CRITICAL '+ $website + ' ' + $status + '-' + $iis.setupstring
|
|
$bReturnCritical = $TRUE
|
|
}
|
|
}
|
|
|
|
If ($bReturnCritical) {
|
|
write-output $strCritica "|" $DataTexte
|
|
exit $returnStateCritical
|
|
}
|
|
Elseif ($bReturnWarning) {
|
|
write-output $strWarning "|" $DataTexte
|
|
exit $returnStateWarning
|
|
}
|
|
Else {
|
|
write-output $str "|" $DataTexte
|
|
exit $returnStateOK
|
|
}
|