2

NRPE_NTデーモンを使用して、MS Windows Server 2008 64ビットにマウントされたpowershell nagiosスクリプトに問題があります。

私は次のようにコマンドを宣言しました:

command[check_files]=cmd /c echo C:\nrpe\libexec\check_file.ps1 $ARG1$; exit($lastexitcode) | powershell.exe -command - 

ExecutionPolicy を無制限に設定しました

次のように、NRPE_NT サービスを再起動し、コンソールでコマンドを宣言しました。

$USER1$/check_nrpe -H $HOSTADDRESS$ -t 60 -c check_files -a $ARG1$

さて、ローカルで実行するとうまくいくのはなぜですか:

C:\>cmd /c echo C:\nrpe\libexec\_file.ps1 C:\nrpe; exit($lastexitcode)| powershell.exe -command -
No file/s present with this string

しかし、check_nrpe で実行すると、次の出力が表示されます。

-Command パラメータで「-」が指定されました。-Command に他の引数を指定することはできません。

デバッグ モードでは、NRPE.log で次のように表示されます。

実行中のコマンド: cmd /c echo C:\nrpe\libexec\check_file.ps1 C:\nrpe; exit($lastexitcode) | powershell.exe -コマンド - $

コマンドは戻りコード 0 で完了しました

このように、check_nrpe が最後の文字列にドル文字 ($) を追加して、コントロール全体を脱線させるのはなぜですか?

前もって感謝します

4

1 に答える 1

1

これがあなたの状況に役立つかどうかはわかりませんが、私の環境で同様のことを引き起こしている何かを見つけました. これが私のNRPEコマンド構成です。

command[foo]=grep file '^pattern$'

パラメータの後に別のパラメータを追加するまでは、すべて問題あり'^pattern$'ませんでした...その新しいパラメータ(コマンドラインの最後)は、$最後に余分に追加されます。

NRPE はエスケープする必要があるようです$。そうしないと、それが変数参照であると考えられ、奇妙なことを行います。引用によってエスケープが不要になることを期待していましたが、NRPE の構成ファイルはシェル スタイルの引用ルールに従っていません。したがって、NRPE 構成をこれに変更すると、問題が解決しました。

command[foo]=grep file '^pattern$$'

$$改訂された NRPE コマンド定義の double に注意してください。

于 2016-04-07T14:29:15.763 に答える