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
| #! /usr/bin/perl -w
use strict;
use Net::SNMP;
use Getopt::Long;
# Chargement du module
use Nagios::Plugin;
use vars qw/ $VERSION /;
my $valeur;
my $code_retour;
my $plugin_nagios = Nagios::Plugin->new(
shortname => " ",
usage =>
'Usage : %s [ -H|--hostname=<HOST> ] [ -o|--oid=<OID> ] [ -C|--community=<snmp_community> ] [ -v|--version=<snmp_version> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ] [ -u|--unity=<unity> ]'
);
# Définition de l'argument -H pour définir le nom hôte
$plugin_nagios->add_arg(
spec => 'hostname|H=s',
help => 'Hostname ou @IP', # Aide au sujet de cette option
);
# Définition de l'argument -o pour récupérer oid
$plugin_nagios->add_arg(
spec => 'oid|o=s',
help => 'oid', # Aide au sujet de cette option
);
# 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
);
# Définition de l'argument -v pour récupérer la version snmp
$plugin_nagios->add_arg(
spec => 'snmp_version|v=s',
help => 'version communauté', # Aide au sujet de cette option
);
# 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',
);
# 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',
);
$plugin_nagios->add_arg(
spec => 'unity|U=s',
help => 'Unité'
);
# 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 $VERSION = $plugin_nagios->opts->snmp_version;
my $UNITY = $plugin_nagios->opts->unity;
#Create a SNMP session
(my $session, my $error)= Net::SNMP->session(
Hostname => $HOST,
Community => $COMMUNITY,
Version => $VERSION);
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};
}
# 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,
);
if ($code_retour =~ m/error/)
{$code_retour = OK};
$plugin_nagios->nagios_exit ( $code_retour, "$valeur $UNITY |$UNITY=$valeur \n"); |