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

我试图定义一个外部脚本,它将在Windows上的NSClient ++ 0.4.1中采用可选参数。 遵循我定义的nsclient-full.ini示例代码

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

它只是产生string%ARGS%作为唯一的parameter passing给myscript.ps1 ,不pipe我在通过NRPE调用时指定的是什么(如果有的话,使用Nagios的check_nrpe )。 然后我试图重写定义

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

myscript.ps1将占用两个参数),这有一点帮助。 至less,如果提供了两个参数,我可以通过args[]数组获取它们。 当调用less于两个参数时,麻烦就开始了 – 在这种情况下,string$ARG2$ARG1$作为parameter passing。 在myscript.ps1的代码中处理这种情况,使整个参数处理例程最好是丑陋的。

有没有一个明智的方式来定义一个外部脚本的可选参数,如果没有指定参数,将不会传递NSClient的variables名称?

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

反正0.4.2.61之前的NSClient ++不支持可变参数。 这是在0.4.2.61中添加的,但是按照这张票的要求。

从NSClient ++ 0.4.2.61开始,有两个新选项$ ARGS $和$ ARGS“$,后者将引用所有string。

nsclient.ini中的configuration:

 [/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")