为什么我的 Powershell 脚本在由 Nagios NRPE 运行时会返回额外的输出?

为什么我的 Powershell 脚本在由 Nagios NRPE 运行时会返回额外的输出?

我有一个 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。这可能是一个错误或一个想要的行为。

我实际上正在互联网上寻找一些线索,并会尝试分析源代码。

相关内容