0

CPAN モジュール POE::Compoenten::Server::NRPE を使用しようとしています。CPAN サイトのサンプルを試し、nagios-tool check_nrpe に対してテストしました。

テキストは問題ありませんでしたが、正しい戻り値を取得できません。この return_result をモジュールの説明で説明しましたが、使用方法がわかりません。

値<> 0を返す方法の非常に短い例を教えていただければ、とてもうれしいです。

どうもありがとう!

乾杯、クリストフ

use POE;
use POE::Component::Server::NRPE;

# test with: check_nrpe -H localhost -c test; echo $?

my $nrped = POE::Component::Server::NRPE->spawn (port => 5666);
$nrped->add_command (command => "test", program =>
sub { print STDOUT "test CRITICAL\n";
return 2;    # always 0???
});

$poe_kernel->run ();
return 0; 
4

2 に答える 2

1

この質問を投稿していただきありがとうございます。私はこのモジュールを知りませんでしたが、とても役に立ちます。

  1. コードで strict と warning を使用してみてください。
  2. OK に 0、WARNING に 1 などを使用する代わりに、POE::Component::Server::NRPE::Constants によって提供される戻り定数を使用します。
  3. 唯一の問題は、テストサブのreturn 2代わりに、exit 2またはそれ以上のものを使用していたことだと思いますexit NRPE_STATE_CRITICAL

次のコードは、必要な結果をもたらすはずです

use strict;
use warnings;
use POE;
use POE::Component::Server::NRPE;

# it's recommended to use the NRPE return states provided by the module
use POE::Component::Server::NRPE::Constants qw(NRPE_STATE_OK NRPE_STATE_CRITICAL);

my $nrped = POE::Component::Server::NRPE->spawn (
        port => 5666
);

$nrped->add_command (command => "test", program =>
        sub {
                print STDOUT "testing CRITICAL\n";
        # better to use NRPE_STATE_CRITICAL...
                exit NRPE_STATE_CRITICAL;
        # ... instead of the corresponding digital value
        # but it should work
        # exit 2;
        }
);

$poe_kernel->run ();
exit 0;

ありがとう

于 2012-11-12T08:26:58.500 に答える
0

モジュールのバグのようです。作者は新しいバージョン (0.16 -> 0.18) を cpan にプッシュしました。

于 2012-11-09T10:03:26.640 に答える