我有一个 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
答案1
您应该尝试删除=
符号周围的多余空格:
write-host "ok $queue|queue=$queue"
到目前为止,我无法解释此版本的 上出现此行为nsclient++
。这在某些以前的版本中不会发生,例如v0.3.8.76
运行良好(至少,如预期的那样,没有意外)。
似乎nsclient++
将空格扩展为值为的数据0
。这可能是一个错误或一个想要的行为。
我实际上正在互联网上寻找一些线索,并会尝试分析源代码。