0

私はPerlでNagiosプラグインを開発しています(Nagios :: Pluginではなく、単なるPerlです)。私がチェックしているエラー状態は、通常、プラグイン内で呼び出されるコマンド出力から発生します。ただし、エラー状態を作成するのは非常に不便なので、テスト出力をプラグインにフィードして、正しく機能するかどうかを確認する方法を探しています。

私が現時点で見つけた最も簡単な方法は、コマンドを呼び出す代わりに、オプションでファイルから入力を読み取るコマンドラインオプションを使用することです。

if($opt_f) {
  open(FILE, $opt_f);
  @output = <FILE>;
  close FILE;
}
else {
  @output = `my_command`;
}

これを行うための他のより良い方法はありますか?

4

2 に答える 2

0

または、テストするためのさまざまなステータスを返すコマンドのテスト バージョンを作成することもできます (おそらくコマンド ライン引数を介して)。

mycommnd のテスト バージョンをテスト ディレクトリ (/my/nagois/tests/bin) に配置します。

次に、テストを実行するコマンド ラインで PATH 環境変数を操作します。

$ env PATH=/my/nagois/tests/bin:$PATH nagios_pugin.pl

$PATH への変更は、その 1 つのコマンドが実行されている間だけ持続します。変更は、プラグインを実行するために生成されるサブシェルにローカライズされます。

コマンドの実行に使用されるバッククォートにより、シェルは PATH を使用してコマンドを見つけます。これにより、コマンドのテスト バージョンが検索パスの最初のディレクトリに存在します。

わからない場合はお知らせください。


新しい方法に対する新しい答え。

于 2012-12-11T23:42:58.673 に答える
0

プラグインにコマンド ライン スイッチを組み込みます。コマンド ラインで -t を設定した場合は、/path/to/test/command でテスト コマンドを使用します。それ以外の場合は、/path/to/production で「production」コマンドを実行します。 /指図

デフォルトのアクションは production です。テスト モードが存在することを示すスイッチをテストするだけです。

于 2012-12-12T17:11:10.697 に答える