Récupérer température CISCO via le module SNMP
Bonjour à tous, j'ai un contrôleur WiFi de type Cisco 4400 series.
Je souhaite pouvoir récupérer via snmp, la température interne de celui-ci.
L'OID qui correspond à la température est : 1.3.6.1.4.1.14179.2.3.1.13.0
J'ai déjà réussi à créer un autre script qui permet de récupérer le nombre de client connectés au total et ça fonctionne parfaitement.
Voici mon script pour récupérer la température :
Code:
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
| use SNMP;
$script = "check_temperature_cisco";
$script_version = "1.0";
$ARGV[0]; #hostname
$ARGV[1]; #community
$ARGV[2]; #SNMP version - 1 or 2c (not 3)
$ARGV[3]; #warning lvl
$ARGV[4]; #critical lvl
$hostname = $ARGV[0];
$community = $ARGV[1];
$version = $ARGV[2];
#Merge the OIDs
$oid_temperature = "1.3.6.1.4.1.14179.2.3.1.13.0";
# Create a SNMP session
$session = new SNMP::Session(DestHost => $ARGV[0],
Community => $ARGV[1],
Version => $ARGV[2],
UseEnums => 1,
UseSprintValue => 1
);
die "Cannot create SNMP::Session (",$SNMP::Session::ErrorStr,")\n" if ( ! defined($session));
#Get the data from supplied OIDs using the SNMP session
($temperature)= $session->get($oid_temperature);
die $session->{ErrorStr} if ($session->{ErrorStr});
print "oid_temp : $oids_temp \n";
print "OID Temperature : $oid_temperature \n";
print "Temperature actuelle : $temperature \n";
} |
Réponse :
perl ./check_temperature_cisco.pl 172.31.6.123 snmpeclille 2 10 20
oid_temp : SNMP::VarList=ARRAY(0xa0ce958)
OID Temperature : 1.3.6.1.4.1.14179.2.3.1.13.0
Temperature actuelle : No Such Object available on this agent at this OID
Mon problème est que, lors de l'exécution du script, au lieu de m'afficher en réponse la température actuelle, j'ai la réponse : No Such Object available on this agent at this OID" alors que si j'affiche l'OID pour y accéder, j'ai bien le bon OID.
Si je tente en "dur" la commande snmpwalk avec cet OID là, j'ai bien en réponse la bonne valeur :
snmpwalk 172.31.6.123 -c public -v 2c 1.3.6.1.4.1.14179.2.3.1.13.0
Réponse :
SNMPv2-SMI::enterprises.14179.2.3.1.13.0 = INTEGER: 39
Quelqu'un saurait-il pourquoi dans le script il ne trouve rien à cet OID ?
Merci d'avance pour votre aide !
Edit : Résolu ! J'avais seulement omis de mettre des crochets à la ligne :
Code:
($temperature)= $session->get($oid_temperature);
en
Code:
($temperature)= $session->get([$oid_temperature]);
J'espère quand même que cela pourra aider certaines personnes aussi étourdies que moi ;)