Powershell
為什麼我的 Powershell 腳本在 Nagios NRPE 執行時會返回額外的輸出?
我有一個通過 nrpe 作為外部腳本執行的 Powershell 腳本。Windows 伺服器 (2008) 正在執行 nsclient++ (nscp.exe) v 0.4.1.102。
我的 powershell 腳本的返回部分如下所示
} else { write-host "ok $queue|queue = $queue" exit 0 }
呼叫 ps1 文件的包裝腳本如下所示:
ps1 = cmd /c echo C:\\NetAdmin\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command -
如果我從 Windows 命令提示符執行它,則輸出類似於:
ok 93|queue = 93
但是當我執行使用我的 nagios 伺服器中的 check_nrpe 時,輸出更改為:
ok 93|'queue''=0 '93'=0
Nagios 在處理性能數據時遇到問題。
更新:送出錯誤報告後,軟體作者回复說這是所需的行為,但在 nsclient.ini 中有兩個選項可以禁用它:
全域(所有腳本)
[/settings/external scripts/scripts/default] ignore perfdata = true
單個腳本
[/settings/external scripts/scripts/check_foo] ignore perfdata = true
您應該嘗試刪除
=
sign 周圍的多餘空格:write-host "ok $queue|queue=$queue"
到目前為止,我無法在此版本的
nsclient++
. 這在一些以前的版本中不會發生,比如v0.3.8.76
像魅力一樣工作(至少,正如預期的那樣,沒有意外)。似乎
nsclient++
將空格擴展為值為 的數據0
。這可能是一個錯誤或一個想要的行為。我其實是在網上找一些線索,會嘗試分析源碼。