Nrpe

NSClient++:帶有可選參數的外部腳本

  • November 3, 2014

我正在嘗試定義一個外部腳本,該腳本將在 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 中的配置:

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

引用自:https://serverfault.com/questions/554247