check_nrpe将 $ 放在校验字符串的末尾



我的PowerShell Nagios脚本有问题,该脚本安装在MS Windows Server 2008 64位上,带有NRPE_NT守护程序。

我已经像这样声明了命令:

command[check_files]=cmd /c echo C:nrpelibexeccheck_file.ps1 $ARG1$; exit($lastexitcode) | powershell.exe -command - 

我已将执行策略设置为不受限制

我已经重新启动NRPE_NT服务并在控制台上声明了命令,如下所示:

$USER1$/check_nrpe -H $HOSTADDRESS$ -t 60 -c check_files -a $ARG1$

现在,为什么如果我在本地运行它,它工作得很好:

C:>cmd /c echo C:nrpelibexec_file.ps1 C:nrpe; exit($lastexitcode)| powershell.exe -command -
No file/s present with this string

但是如果我按 check_nrpe 运行它,我会收到以下输出:

'-' 是使用 -Command 参数指定的:不允许使用 -Command 的其他参数。

调试模式下,在 NRPE 上.log我可以看到以下内容:

运行命令: cmd/c echo C:rpe\libexec\check_file.ps1 C:rpe; 出口($lastexitcode) |PowerShell.exe -command - $

命令已完成,返回代码为 0

为什么以这种方式,check_nrpe在字符串末尾添加美元字符 ($),从而破坏整个控件?

提前致谢

我不确定这是否会对您的情况有所帮助,但我刚刚在我的环境中发现了导致类似情况的一些东西。这是我的NRPE命令配置:

command[foo]=grep file '^pattern$'

一切都很好,直到我想在'^pattern$'参数之后添加另一个参数......该新参数(在命令行末尾)将附加一个额外的$附加到末尾。

NRPE 似乎需要对 $ 进行转义,否则它会认为它是一个变量引用并用它做奇怪的事情。我期望引用会使其不需要转义,但 NRPE 的配置文件不遵循 shell 样式的引用规则。因此,将我的NRPE配置更改为此配置解决了我的问题:

command[foo]=grep file '^pattern$$'

请注意修订后的 NRPE 命令定义中的双$$

相关内容

  • 没有找到相关文章

最新更新