# prtg-nagios # # Simple Script to run Nagios Scripts and convert results into PRTC EXEXML-Format # can run as CustomEXEXML or can run as HTTPPush-Sensor param ( [string]$command="cmd.exe /c 'echo OK MyCheck1 var1=value1^|var2=value2 ein beliebiger text mit Leerzeichen'", [string]$parameters, [string]$httppush="" # "GET http://:/?content=" # URL ) Write-host "prtg-nagios: Start" set-psdebug -strict Write-host " Start Nagios Command $command" $result = invoke-expression -command $command $resultarray= $result.SPLIT(" ") $status=$resultarray[0] $name=$resultarray[1] $vars=$resultarray[2].split("|") $textmessage=$resultarray[3..($resultarray.length - 1)] Write-host " Preparing Output XML" $prtgresult='' +"`r`n" $prtgresult+="`r`n" foreach ($var in $vars) { $prtgresult+=" `r`n" $prtgresult+=" "+$name+":"+$var.split("=")[0]+"`r`n" $prtgresult+=" "+$var.split("=")[1].split(";")[0]+"`r`n" $prtgresult+=" `r`n" } $prtgresult+=""+$textmessage+"`r`n" $prtgresult+="" if ($httppush.length -gt 0 ) { write-host " Sending via HTTPPush" $httppush $Answer = Invoke-Webrequest ` -method "GET" ` -URI ($httppush+$prtgresult) if ($answer.Statuscode -ne 200) { write-Host " Request to PRTG failed Exit 3" exit 3 } } else { write-host " Sending Output to pipeline" $prtgresult } Write-host "prtg-nagios: Exiting. Code:" -nonewline switch ($status) { "OK" {write-host "0"; exit 0} "WARNING" {write-host "1"; exit 1} "CRITICAL" {write-host "2"; exit 2} "UNKNOWN" {write-host "3"; exit 3} }