我有一个Powershell脚本,我通过nrpe作为外部脚本运行。 Windows服务器(2008)运行nsclient ++(nscp.exe)v 0.4.1.102。
我的powershell脚本的返回部分看起来像这样
} else { write-host "ok $queue|queue = $queue" exit 0 }
调用ps1文件的包装脚本如下所示:
ps1 = cmd /c echo C:\\NetAdmin\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command -
如果我从Windows命令提示符运行这个输出看起来像这样:
ok 93|queue = 93
但是当我运行从我的nagios服务器使用check_nrpe输出变为:
ok 93|'queue''=0 '93'=0
Nagios在处理性能数据时遇到问题。
更新:在提交错误报告后,软件作者回应说这是期望的行为,但在nsclient.ini中有两个选项可禁用它:
全球(所有脚本)
[/settings/external scripts/scripts/default] ignore perfdata = true
单个脚本
[/settings/external scripts/scripts/check_foo] ignore perfdata = true
您应该尝试删除= sign周围的多余空格:
write-host "ok $queue|queue=$queue"
现在我无法在这个版本的nsclient++上解释这种行为。 这种情况在v0.3.8.76以前的版本中没有发生过,就像魅力一样(至less按照预期没有意外)。
似乎nsclient++将空间扩展为值为0的数据。 这可能是一个错误或想要的行为。
我实际上是在网上search一些线索,并试图分析源代码。