Nagios::NRPE::Packet - Assembly and de-assembly of an NRPE packet
use IO::Socket; use IO::Socket::INET; # Import necessary constants into Namespace use Nagios::NRPE::Packet qw(NRPE_PACKET_VERSION_2 NRPE_PACKET_QUERY MAX_PACKETBUFFER_LENGTH STATE_UNKNOWN STATE_CRITICAL STATE_WARNING STATE_OK); my $packet = Nagios::NRPE::Packet->new(); my $socket = IO::Socket::INET->new( PeerAddr => $host, PeerPort => $port, Proto => 'tcp', Type => SOCK_STREAM) or die "ERROR: $@ \n"; print $socket $packet->assemble(type => QUERY_PACKET, buffer => "check_load 1 2 3", version => NRPE_PACKET_VERSION_2 ); my $data = <$socket> my $response = $packet->deassemble($data); print $response->{buffer};
This class is meant to be used when an active connection exists and is ready to send the packet.
Takes the following options as a hashref
Following functions can be used after the creation of the packet
assemble
Takes a hash of options defining the packet to be sent and returns the assembled packet. You can print this to an open socket and send it to either a server or the client depending on your situation.
check
A string defining the check to be run or the output of a check eg: "check_cpu" NOTE: Nagios can accept arguments appended to the check in the form: "check_somecheck!ARG1!ARG2!ARG..."
version
The NRPE version you want to use (currently only V2 is accepted).
See CONSTANTS for options here.
type
The TYPE of packet you wish to send, which is either QUERY or RESPONSE.
result_code
This is a curios value as it seems to have no apparent affect on neither the server nor the client.
A set value is 2324.
deassemble
Takes a packet recieved by either client or server and deassembles them. The returned hashref contains the following values:
packet_type
crc32_value result_code buffer
validate($packet)
Validates the contents of a packet using CRC32 checksumming. Returns undef if not succesful.
These constants can be exported upon request with the 'use' pragma like this:
# Will only import the constant NRPE_PACKET_VERSION_2 into your namespace use Nagios::NRPE::Packet qw(NRPE_PACKET_VERSION_2);
NRPE_PACKET_VERSION_3 NRPE_PACKET_VERSION_2 NRPE_PACKET_VERSION_1
The value of the NRPE version you want/need to use.
QUERY_PACKET RESPONSE_PACKET
The packet type you want to send or recieve
MAX_PACKETBUFFER_LENGTH MAX_COMMAND_ARGUMENTS
A threshhold on the send data
NRPE_HELLO_COMMAND
unknown
DEFAULT_SOCKET_TIMEOUT DEFAULT_CONNECTION_TIMEOUT
The default timeout for a connection and its corresponding socket
STATE_UNKNOWN STATE_CRITICAL STATE_WARNING STATE_OK
States returned by the check
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.
Checksumming for the packet. Necessary for sending a valid Packet.
Debugging function for hexdumping a binary string.
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.