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
=
記号の周りの余分なスペースを削除してみてください:
write-Host "ok $queue|queue=$queue"
今のところ、このバージョンのnsclient++
でこの動作を説明することはできません。これは、チャームのように機能するv0.3.8.76
のような以前のバージョンでは発生していません(少なくとも、予想どおり、驚くことはありません)。
nsclient++
は、値が0
のデータとしてスペースを拡張しているようです。それはバグまたは望まれる振る舞いである可能性があります。
私は実際にインターネットでいくつかの手がかりを探しており、ソースコードを分析しようとしています。