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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| #! /usr/bin/perl -w
use strict;
use Net::SNMP;
use Getopt::Long;
use List::Util qw(sum);
# Chargement du module
use Nagios::Plugin;
use vars qw/ $VERSION /;
my $valeur;
my $OID1 = "1.3.6.1.4.1.13576.10.1";
my $OID2 = "1.3.6.1.2.1.33.1";
my $host1 = "W.X.Y.Z";
my $host2 = "W.X.Y.Z";
my $community = "XXXXX";
my $clim;
my $info;
my $code_retour;
my @moy;
my $gliss = 50;
my $moy_gliss;
my $tab;
# Version du plugin
$VERSION = '3.01';
my $LICENCE
= "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
. ' Il est livré avec ABSOLUMENT AUCUN GARANTIE.';
#Définition des arguments
my $plugin_nagios = Nagios::Plugin->new(
shortname => " ",
usage =>
'Usage : %s [ -H|--hostname <HOST> ] [ -o|--oid <OID> ] [ -C|--community <snmp_community> ] [ -c|critical=<threshold> ] [ -w|--warning=<threshold> ]',
version => $VERSION,
license => $LICENCE,
);
$plugin_nagios->add_arg(
spec => 'hostname|H=s',
help => 'Hostname ou @IP',
);
$plugin_nagios->add_arg(
spec => 'oid|o=s',
help => 'oid',
);
$plugin_nagios->add_arg(
spec => 'snmp_community|C=s',
help => 'Nom de la communauté',
);
$plugin_nagios->add_arg(
spec => 'warning|w=f',
help => 'Seuil Warning',
);
$plugin_nagios->add_arg(
spec => 'critical|c=f',
help => 'Seuil Critical',
);
$plugin_nagios->add_arg(
spec => 'unit|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 $UNIT = $plugin_nagios->opts->unit;
# Creation de la 1er session SNMP
(my $session, my $error) = Net::SNMP->session(
Hostname => $host1,
Community => $community);
die "session error: $error" unless ($session);
my $result = $session->get_request($OID1);
die "request error: ".$session->error unless (defined $result);
$session->close;
foreach my $cle (keys(%{$result})){
$clim=$result->{$cle} ;
}
# Creation de la 2eme session SNMP
(my $session2, my $error2) = Net::SNMP->session(
Hostname => $host2,
Community => $community);
die "session error: $error2" unless ($session);
my $result2 = $session2->get_request ($OID2);
die "request error: ".$session2->error unless (defined $result2);
$session2->close;
foreach my $cle (keys(%{$result2})){
$info=$result2->{$cle} ;
}
#Calcu du PUE HZ
my $total_info = (((120)*$info)*(0.95))/100;
my $pue_hz = (($clim+$total_info)/$total_info);
#Nombre de chiffre après la virgule
$pue_hz = sprintf ("%0.4f", $pue_hz);
#Effectuer la moyenne
foreach $tab (@moy) {
shift @moy if @moy >= $gliss;
push @moy, $pue_hz;
$moy_gliss = sum(@moy)/@moy;
}
print "Moyenne : $moy_gliss\n ";
#Inclure des seuils
#$code_retour = $plugin_nagios->check_threshold(
# check => $valeur,
# warning => $plugin_nagios->opts->warning,
# critical => $plugin_nagios->opts->critical,
#);
#Code retour Nagios
#if ($code_retour =~ m/error/)
#{$code_retour = OK};
#$plugin_nagios->nagios_exit ( $code_retour, "$pue_hz$UNIT |$UNIT=$pue_hz \n"); |
Partager