Recuperation de donnée en perl

Répondre
skoizer
Messages : 15
Enregistré le : 08 octobre 2013, 14:06

Recuperation de donnée en perl

Message par skoizer » 27 octobre 2017, 15:11

Bonjour,
Je suis en train de m'initier sur les plugins pearl avec EON en 5.1
C'est pour monitorer un UTM stormshild
J'ai déjà pu monitorer les liens HA, le remote stormshield en HA avec ce script
Mais la je bloque sur la recuperation de valeur renvoyé par mon equipement
Je voudrais recuperer les données renvoyé par OID qui definit l'uptime de mon stormshild
avec un snmpwalk j'arrive bien a avoir cette information
[root@serveur006 plugins]# snmpwalk -m all -c public -v 2c 192.0.0.1 .1.3.6.1.4.1.11256.1.11.7.1.11.1
STORMSHIELD-HA-MIB::snsUptime.1 = INTEGER: 3392247
Inférieure a 100 c'est critical et 600 c'est un warning
quand je lance le script j'ai ceci
Subroutine Net::SNMP::Dispatcher::time redefined at /usr/share/perl5/vendor_perl/Net/SNMP/Dispatcher.pm line 56.

c'est dans l’instanciation de Net::SNMP qui pose probléme
je le lance comme ceci en ssh
./check_snmp_stormshield.pl 192.0.0.1 public HA
C'est du snmp vv2
use warnings;
use Net::SNMP;

my $num_args= $#ARGV + 1;
if($num_args != 3){
print "\nUsage: [ HOST] [COMUNITY SNMP] \n argument HA HAFAULTLINK UPTIME \n";
exit;
}
my $IP=$ARGV[0];
my $COM=$ARGV[1];
my $demande=uc $ARGV[2];

my $StormshieldStatus = 'snmpwalk -v 2c -c '.$COM.' '.$IP.' .1.3.6.1.2.1.1.5.0 2>&1 | grep "Timeout"';
system "$StormshieldStatus";
if($? == 0) {
print("Timeout:: host unreachable ?");
exit 3;
}
if( $demande eq "HA") {
my $EnStatus = 'snmpwalk -v 2c -c '.$COM.' '.$IP.' .1.3.6.1.4.1.11256.1.11.2 2>&1 | grep "INTEGER: 0"';
system "$EnStatus";
if($? != 0) {
print("Critical: stormshield en HA distant ne repond pas\n");
exit 2;
} else {
print(" :: stormshield HA distant OK\n");
exit 0;
}
}
if( $demande eq "HAFAULTLINK") {
my $EnStatus = 'snmpwalk -v 2c -c '.$COM.' '.$IP.' .1.3.6.1.4.1.11256.1.11.6 2>&1 | grep "INTEGER: 0"';
system "$EnStatus";
if($? != 0) {
print("Critical: lien pour la haute disponnibilite erreur\n");
exit 2;
} else {
print(" :: lien HA OK\n");
exit 0;
}
}
if( $demande eq "UPTIME") {
# partie qui ne fonctionne pas
my $desc = '1.3.6.1.4.1.11256.1.11.7.1.11.1';
my ($session, $error);
($session, $error) = Net::SNMP->session(
-hostname => $IP,
-community => $COM,
-version => 2,
-timeout => "30",
-port => "161");
if (!defined($session)) {
print("ERROR: %s.\n", $error);
exit 3;
}
my $uptime = $session->get_request(-varbindlist=>[$desc]);
$session->close;
if($uptime < 120) {
print("Critical: uptime $uptime sec \n");
exit 2;
}
if($uptime < 600) {
print("Warning: uptime $uptime sec \n");
exit 1;
}
if($uptime > 600) {
print(" :: uptime OK $uptime sec \n");
exit 0;
}
}
__END__
quelqu'un aurait il une piste ?

Répondre