[英]check_nrpe treats return code 1 as OK
我有一個powershell腳本,可以通過check_nrpe調用。 當我執行被動檢查時,我看到退出代碼/返回值為1,但仍將其視為OK狀態而不是CRITICAL。
基本上,此腳本僅檢查目標文件夾.. \\ bar是否為空。 如果其為空,則腳本返回“ 0”,這會觸發Nagios中的OK狀態。 如果等待25秒后文件仍不移動,則返回“ 1”,這會觸發Nagios中的CRITICAL狀態。
我在文件夾中保留了幾個文件,可以看到返回值為“ 1”。 但是nagios仍然將其視為OK狀態。
使用以下命令進行被動檢查。
$ /usr/lib64/nagios/plugins/check_nrpe -H 10.XX.X.XXX -c check_kpis -t 30
Outout
1
腳本如下。
$path = "D:\foo\bar"
$flagged1 = "D:\temp\flag1.txt"
$flagged2 = "D:\temp\flag2.txt"
$contents = Get-ChildItem -Path $path -Force -Recurse
if ( $contents.count -gt 0 )
{
$contents.Name | Out-File -FilePath $flagged1
Start-Sleep -s 25
$contents = Get-ChildItem -Path $path -Force -Recurse
$contents.Name | Out-File -FilePath $flagged2
if ( $contents.count -gt 0 )
{
$diff = Compare-Object -ReferenceObject $(Get-Content $flagged1) -DifferenceObject $(Get-Content $flagged2) -IncludeEqual
If ($diff.SideIndicator -eq "==")
{
return 1
exit
}
else
{
return 0
exit
}
}
else
{
return 0
exit
}
}
else
{
return 0
exit
}
有人可以在這里提出什么問題嗎?
決定狀態的是EXIT代碼,您使用的是函數中沒有的返回。 這樣的事情會更好
$path = "D:\foo\bar"
$flagged1 = "D:\temp\flag1.txt"
$flagged2 = "D:\temp\flag2.txt"
$contents = Get-ChildItem -Path $path -Force -Recurse
if ( $contents.count -gt 0 )
{
$contents.Name | Out-File -FilePath $flagged1
Start-Sleep -s 25
$contents = Get-ChildItem -Path $path -Force -Recurse
$contents.Name | Out-File -FilePath $flagged2
if ( $contents.count -gt 0 )
{
$diff = Compare-Object -ReferenceObject $(Get-Content $flagged1) -DifferenceObject $(Get-Content $flagged2) -IncludeEqual
If ($diff.SideIndicator -eq "==")
{
echo 1
exit 1
}
else
{
echo 0
exit 0
}
}
else
{
echo 0
exit 0
}
}
else
{
echo 0
exit 0
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.