Powershell

為什麼我的 Powershell 腳本在 Nagios NRPE 執行時會返回額外的輸出?

  • April 15, 2014

我有一個通過 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。這可能是一個錯誤或一個想要的行為。

我其實是在網上找一些線索,會嘗試分析源碼。

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