NAME
Nagios::NRPE::Daemon - A Nagios NRPE Daemon
SYNOPSIS
use Nagios::NRPE::Daemon;
use IPC::Cmd qw(can_run run run_forked);
# create the commandlist we accept
my $commandlist =
};
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 $buffer;
if (scalar run(command => $commandlist->{$check}->{bin} . " " . $args,
verbose => 0,
buffer => \$buffer,
timeout => 20)) {
return $buffer;
}
}
};
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
);
DESCRIPTION
A simple daemon implementation with the capabillity to add your own callbacks and hooks in case you want to build your own NRPE Server.
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Andreas Marschke <andreas.marschke@googlemail.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
- new()
-
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 $buffer; if (scalar run(command => $commandlist->{$check}->{bin} . " " . $args, verbose => 0, buffer => \$buffer, timeout => 20)) { return $buffer; } } };
- start
-
Starts the server and enters the Loop listening for packets
- commandlist
-
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.
- create_socket
-
A shorthand function returning either an encrypted or unencrypted socket depending on wether ssl is set to 1 or 0.