#!/usr/bin/perl
package nagios_libs;
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(NAGIOS_SetStatus NAGIOS_Add NAGIOS_Send NAGIOS_Debug NAGIOS_Add $NAGIOS_DEBUG %STATES $NAGIOS_STATUS $N_COLOR_GREEN $N_COLOR_RED $N_COLOR_YELLOW $N_COLOR_CLEAR);
#########################
# A mettre dans une lib #
#########################
# Global
our %STATES=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
our $NAGIOS_STATUS=$STATES{'OK'};
our $NAGIOS_DEBUG=0;
# Colors
our $N_COLOR_GREEN="";
our $N_COLOR_RED="";
our $N_COLOR_YELLOW="";
our $N_COLOR_CLEAR="";
my $STATE_OK_STR = "OK";
my $STATE_WARNING_STR="WARNING";
my $STATE_CRITICAL_STR="CRITICAL";
my $STATE_UNKNOWN_STR="UNKNOWN";
my $STATUS_STR=$STATE_OK_STR;
my $STATUS_SHORT="";
my $PERFDATA;
my $MESSAGE="";
sub NAGIOS_Debug {
if ( $NAGIOS_DEBUG == 1 )
{
print "@_";
}
}
sub NAGIOS_Add
{
my ($s) = @_;
$MESSAGE="$MESSAGE$s";
}
sub NAGIOS_Send
{
my ($s) = @_;
if ( ! $s eq "" )
{
$PERFDATA=" | $s";
}
else
{
$PERFDATA="";
}
print "$STATUS_STR $STATUS_SHORT$PERFDATA\n$MESSAGE";
}
sub NAGIOS_SetStatus
{
my ($f, $s) = @_;
if ( ! $s eq "" )
{
if (! $STATUS_SHORT eq "" )
{
if( $f != $STATES{'OK'} && $f >= $NAGIOS_STATUS )
{
$STATUS_SHORT="$s, $STATUS_SHORT";
}
else
{
$STATUS_SHORT="$STATUS_SHORT, $s";
}
}
else
{
$STATUS_SHORT=$s;
}
}
if ( $f > $NAGIOS_STATUS )
{
$NAGIOS_STATUS=$f;
if ( $NAGIOS_STATUS == $STATES{'WARNING'} )
{
$STATUS_STR=$STATE_WARNING_STR;
}
elsif ( $NAGIOS_STATUS == $STATES{'CRITICAL'} )
{
$STATUS_STR=$STATE_CRITICAL_STR;
}
elsif ( $NAGIOS_STATUS == $STATES{'OK'} )
{
$STATUS_STR=$STATE_OK_STR;
}
}
}
1;