我正在尝试定义一个外部脚本,该脚本将在 Windows 上的 NSClient++ 0.4.1 中采用可选参数。按照nsclient-full.ini
我定义的示例代码
mycheck=cmd /C echo C:\mydir\myscript.ps1 %ARGS% | powershell.exe -command -
%ARGS%
它只是产生作为唯一参数传递给myscript.ps1的字符串,无论我在通过 NRPE 的调用中指定什么(check_nrpe
如果重要的话,使用 Nagios)。然后我尝试将定义重写为
mycheck=cmd /C echo C:\mydir\myscript.ps1 $ARG1$ $ARG2$ | powershell.exe -command -
(myscript.ps1最多需要两个参数),这确实有点帮助。至少,如果提供了两个参数,我可以通过args[]
数组获取它们。当调用的参数少于两个时,麻烦就开始了——在这种情况下,文字字符串$ARG2
和$ARG1$
作为参数传递。在myscript.ps1的代码中处理这种情况会使整个参数处理例程变得丑陋。
如果没有指定参数,是否有一种合理的方法可以为外部脚本定义可选参数,该脚本不会传递 NSClient 的变量名?
首先 %ARGS% 是一个包装器(这是别的东西),也许我应该重命名 $ARGS$ 以减少混乱?
无论如何,从 0.4.2.61 开始的 NSClient++ 不支持可变参数。这是在 0.4.2.61 中添加的,但是根据此票证中的请求。
从 NSClient++ 0.4.2.61 开始,有两个新选项 $ARGS$ 和 $ARGS"$ 后者将引用所有字符串。
nsclient.ini 中的配置:
执行未引用的版本:
执行引用的版本: