1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| #! /usr/bin/perl -w
use strict;
use warnings;
use Net::SNMP;
use Getopt::Long;
# Chargement du module
use Nagios::Plugin;
use vars qw/ $VERSION /;
my $valeur;
my $code_retour;
# Version du plugin
$VERSION = '1.12';
my $LICENCE
= "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
. ' Il est livré avec ABSOLUMENT AUCUNE GARANTIE.';
my $plugin_nagios = Nagios::Plugin->new(
shortname => 'Verification SNMP',
usage =>
'Usage : %s [ -H|--hostname <HOST> ] [ -o|--oid <OID> ] [ -C|--community <snmp_community> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ]',
version => $VERSION,
license => $LICENCE,
);
# Définition de l'argument -H pour définir le nom dhôte
$plugin_nagios->add_arg(
spec => 'hostname|H=s',
help => 'Hostname ou @IP', # Aide au sujet de cette option
required => 1, # Argument obligatoire
# label => ADDRESS
);
# Définition de l'argument -o pour récupérer loid
$plugin_nagios->add_arg(
spec => 'oid|o=s',
help => 'oid', # Aide au sujet de cette option
required => 1, # Argument obligatoire
);
# Définition de l'argument -C pour récupérer la communauté
$plugin_nagios->add_arg(
spec => 'snmp_community|C=s',
help => 'Nom de la communauté', # Aide au sujet de cette option
required => 1, # Argument obligatoire
);
# Définition de l'argument warning
$plugin_nagios->add_arg(
spec => 'warning|w=f', # Nous acceptons des nombres réels
help => 'Exit with WARNING status if less than BYTES bytes of file',
label => 'BYTES',
required => 1,
);
# Définition de l'argument critical
$plugin_nagios->add_arg(
spec => 'critical|c=f',
help => 'Exit with CRITICAL status if less than BYTES bytes of file',
label => 'BYTES',
required => 1,
);
# Activer le parsing des options de ligne de commande
$plugin_nagios->getopts;
my $HOST = $plugin_nagios->opts->hostname;
my $OID = $plugin_nagios->opts->oid;
my $COMMUNITY = $plugin_nagios->opts->snmp_community;
my $WARNING = $plugin_nagios->opts->warning;
my $CRITICAL = $plugin_nagios->opts->critical;
#Create a SNMP session
(my $session, my $error)= Net::SNMP->session(
Hostname => $HOST,
Community => $COMMUNITY);
die "session error: $error" unless ($session);
my ($result) = $session->get_request($OID);
die "request error:".$session->error unless (defined $result);
$session->close;
foreach my $cle (keys(%{$result})){
$valeur= $result->{$cle};
}
# Convertir la valeur
#$valeur=$valeur/10;
#$valeur=$valeur/100;
# Récupérons le code retour en fonction des seuils
$code_retour = $plugin_nagios->check_threshold(
check => $valeur,
warning => $plugin_nagios->opts->warning,
critical => $plugin_nagios->opts->critical,
);
#$plugin_nagios->nagios_exit( $code_retour, "Valeur $valeur" );
printf("$code_retour, Courant $valeur (Seuils W:$WARNING C:$CRITICAL)|Courant=$valeur A\n", $result,$result); |
Partager