The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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
 );
=head1 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.

6 POD Errors

The following errors were encountered while parsing the POD:

Around line 87:

Expected text after =item, not a bullet

Around line 91:

Expected text after =item, not a bullet

Around line 95:

Expected text after =item, not a bullet

Around line 99:

Expected text after =item, not a bullet

Around line 103:

Expected text after =item, not a bullet

Around line 107:

Expected text after =item, not a bullet