Nrpe
NSClient++:帶有可選參數的外部腳本
我正在嘗試定義一個外部腳本,該腳本將在 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")