web-dev-qa-db-ja.com

Nagios NRPEで実行すると、Powershellスクリプトが余分な出力を取得するのはなぜですか?

Nrpeを介して外部スクリプトとして実行しているPowershellスクリプトがあります。 Windowsサーバー(2008)は、nsclient ++(nscp.exe)v0.4.1.102を実行しています。

私のPowerShellスクリプトのreturnセクションは次のようになります

 } 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で無効にするための2つのオプションがあると回答しました。

グローバル(すべてのスクリプト)

[/settings/external scripts/scripts/default]
ignore perfdata = true

単一のスクリプト

[/settings/external scripts/scripts/check_foo]
ignore perfdata = true
1
uSlackr

=記号の周りの余分なスペースを削除してみてください:

write-Host "ok $queue|queue=$queue"

今のところ、このバージョンのnsclient++でこの動作を説明することはできません。これは、チャームのように機能するv0.3.8.76のような以前のバージョンでは発生していません(少なくとも、予想どおり、驚くことはありません)。

nsclient++は、値が0のデータとしてスペースを拡張しているようです。それはバグまたは望まれる振る舞いである可能性があります。

私は実際にインターネットでいくつかの手がかりを探しており、ソースコードを分析しようとしています。

2
krisFR