我尝试使用您的CPAN模块POE :: Compoenten :: Server :: NRPE。 我尝试了CPAN网站上的示例,并针对nagios-tool check_nrpe进行了测试。
文字很好,但我无法获得正确的返回值。 你在模块描述中描述了这个return_result,但我不知道如何使用它。
会非常好,如果你能给我一个非常简短的例子,如何返回一个值<> 0
非常感谢!
欢呼声, christoph
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;
答案 0 :(得分:1)
感谢您发布此问题。我不知道这个模块,但它对我有很大的帮助。
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;
由于
答案 1 :(得分:0)
看起来像模块中的错误。 作者在cpan上推了一个新版本(0.16 - > 0.18)。