Powershell 检查\u nrpe将返回代码1视为正常
我有一个powershell脚本,我通过check\u nrpe调用它。当我做被动检查时,我看到退出代码/返回值为1,但它仍然被视为状态OK而不是CRITICAL 基本上,此脚本只检查目标文件夹..\bar是否为空。如果为空,则脚本返回“0”,从而在Nagios中触发OK状态。如果文件在等待25秒后仍不移动,则返回“1”,从而触发Nagios中的临界状态 我在文件夹中保留了一些文件,可以看到返回值为“1”。然而,nagios仍然将其视为状态OK 使用下面的命令进行被动检查Powershell 检查\u nrpe将返回代码1视为正常,powershell,return-value,nagios,exit-code,nrpe,Powershell,Return Value,Nagios,Exit Code,Nrpe,我有一个powershell脚本,我通过check\u nrpe调用它。当我做被动检查时,我看到退出代码/返回值为1,但它仍然被视为状态OK而不是CRITICAL 基本上,此脚本只检查目标文件夹..\bar是否为空。如果为空,则脚本返回“0”,从而在Nagios中触发OK状态。如果文件在等待25秒后仍不移动,则返回“1”,从而触发Nagios中的临界状态 我在文件夹中保留了一些文件,可以看到返回值为“1”。然而,nagios仍然将其视为状态OK 使用下面的命令进行被动检查 $ /usr/lib6
$ /usr/lib64/nagios/plugins/check_nrpe -H 10.XX.X.XXX -c check_kpis -t 30
出局
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
}
有人能指出这里有什么问题吗?是退出代码决定了状态,您使用的是甚至不在函数中的返回。这样比较好
$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
}