我有一个 Nagios NRPE 命令无法接受包含空格的参数。我将在最后列出我尝试过的所有方法。以下是我的设置示例:
在 command.cfg 文件中:
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c $ARG1$ -a $ARG2$ $ARG3$
在 nsclient.ini 文件中:
check_iis = cmd /c echo scripts\check_iis.ps1 $ARG1$ ; exit($lastexitcode) | powershell.exe -ExecutionPolicy Bypass -command -
这是从 windows.cfg 运行的命令:
check_command check_nrpe_2args!check_iis!"-checktype Sites -EXCLUDE asdf.com,Default Web Site"
此命令可以排除 asdf.com,但是一旦添加“默认网站”,它就会失败并出现以下错误:
C:Program FilesNSClient++scriptscheck_iis.ps1 : Missing an argument for
parameter 'CheckType'. Specify a parameter of type 'System.String' and try
again.
我尝试在commands.cfg和nsclient.ini中为$args添加引号。在ini文件中,这没有任何区别。它导致commands.cfg中的命令失败
我在 Windows 上尝试过的其他版本
项目清单
配置文件:
check_iis!Sites!Exclude Default Web Site,asdf.com
check_iis!Sites!Exclude "Default Web Site,asdf.com"
check_iis!-Sites -exclude "Default Web Site,asdf.com"
check_iis!Sites!Exclude!"Default Web Site,asdf.com"
check_iis!Sites!-exclude ""Default Web Site",asdf.com"
check_iis!Sites!-exclude asdf.com /"Default Web Site/"
我的意思是还有更多,但对于同一命令的不同变体,列表会不断增加。这真的有点令人尴尬,哈哈。
提前致谢
答案1
在命令定义中将 $ARG2$ 放在引号内check_nrpe_2args
(并删除不需要的 $ARG3$)
您可能还需要在 ARG 周围添加额外的引号,并将其转义,以便第一个 shell 不会吃掉它们。