Nagios::NRPE::Daemon - A Nagios NRPE Daemon
use Nagios::NRPE::Daemon; use Nagios::NRPE::Packet qw(STATE_UNKNOWN); use IPC::Cmd qw(run_forked); my $callback = sub { my ($self, $check, @options) = @_; my $commandlist = $self->commandlist(); if ($commandlist->{$check}) { my $args = $commandlist->{$check}->{args}; my $i = 0; foreach (@options) { $i++; $args =~ s/\$ARG$i\$/$_/; } my $result = run_forked($commandlist->{$check}->{bin} . " " . $args, {timeout => 20}); my $stdout = $result->{stdout}; chomp $stdout; return ($result->{exit_code}, $stdout); } else { return (STATE_UNKNOWN, sprintf "No such check: '%s'", $check); } }; my $daemon = Nagios::NRPE::Daemon->new( listen => "127.0.0.1", port => "5666", pid_dir => '/var/run', ssl => 0, commandlist => { "check_cpu" => { bin => "/usr/lib/nagios/plugin/check_cpu", args => "-w 50 -c 80" } }, callback => $callback ); $daemon->start;
A simple daemon implementation with the capabillity to add your own callbacks and hooks in case you want to build your own NRPE Server.
Takes the following options as a hashref:
* listen:
Listen on this IP Address
* port:
Port to listen on
* pid_dir
The pidfile for this daemon
* ssl
Use ssl (1|0)
* commandlist
A hashref of the allowed commands on the daemon
* callback
A sub executed everytime a check should be run. Giving the daemon full control what should happen.
my $callback = sub { my ($self, $check, @options) = @_; my $commandlist = $self->commandlist(); if ($commandlist->{$check}) { my $args = $commandlist->{$check}->{args}; my $i = 0; foreach (@options) { $i++; $args =~ s/\$ARG$i\$/$_/; } my $result = run_forked($commandlist->{$check}->{bin} . " " . $args, {timeout => 20}); my $stdout = $result->{stdout}; chomp $stdout; return ($result->{exit_code}, $stdout); } else { return (STATE_UNKNOWN, sprintf "No such check: '%s'", $check); } };
Starts the server and enters the Loop listening for packets
A hashref of elements that are valid commands. An example for it is:
"check_cpu" => { bin => "/usr/lib/nagios/plugin/check_cpu", args => "-w 50 -c 80" }
args can contain $ARG1$ elements like normal nrpe.cfg command elements.
args
A shorthand function returning either an encrypted or unencrypted socket depending on wether ssl is set to 1 or 0.
This software is copyright (c) 2017 by the authors (see AUTHORS file).
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Nagios::NRPE, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Nagios::NRPE
CPAN shell
perl -MCPAN -e shell install Nagios::NRPE
For more information on module installation, please visit the detailed CPAN module installation guide.