NSClient++:带有可选参数的外部脚本

NSClient++:带有可选参数的外部脚本

我正在尝试定义一个外部脚本,该脚本将在 Windows 上的 NSClient++ 0.4.1 中接受可选参数。按照nsclient-full.ini我定义的示例代码

mycheck=cmd /C echo C:\mydir\myscript.ps1 %ARGS% | powershell.exe -command -

它只返回%ARGS%作为唯一参数传递给我的脚本.ps1,无论我在 NRPE 调用中指定了什么(check_nrpe如果有必要,可以使用 Nagios)。然后我尝试将定义重写为

mycheck=cmd /C echo C:\mydir\myscript.ps1 $ARG1$ $ARG2$ | powershell.exe -command -

我的脚本.ps1最多需要两个参数),这确实有点帮助。至少,如果提供了两个参数,我可以通过数组获取它们args[]。当调用的参数少于两个时,麻烦就开始了——在这种情况下,文字字符串$ARG2$ARG1$作为参数传递。在代码中处理这种情况我的脚本.ps1使得整个论证处理过程变得非常丑陋。

有没有一种理智的方式来定义选修的如果没有指定参数,则不会传递 NSClient 的变量名的外部脚本的参数?

答案1

首先,%ARGS% tingy 是一个包装器(这是别的东西),也许我应该重命名 $ARGS$ 以使其不那么令人困惑?

无论如何,NSClient++ 在 0.4.2.61 之前不支持变量参数。不过,根据此票中的请求,此功能已在 0.4.2.61 中添加。

从 NSClient++ 0.4.2.61 开始有两个新选项 $ARGS$ 和 $ARGS"$,后者将引用所有字符串。

nsclient.ini中的配置:

[/settings/external scripts/scripts]
x=scripts\\check_test.bat $ARGS$
y=scripts\\check_test.bat $ARGS"$

执行不带引号的版本:

x 1 "2 3" 4 5
D ext-script Command line: scripts\\check_test.bat 1 2 3 4 5
L     client OK: Test arguments are: (1 2 3)

执行引用的版本:

y 1 "2 3" 4 5
D ext-script Command line: scripts\\check_test.bat "1" "2 3" "4" "5"
L     client OK: Test arguments are: ("1" "2 3" "4")

相关内容