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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
($temperature)= $session->get($oid_temperature);
en

Code : Sélectionner tout - Visualiser dans une fenêtre à part
($temperature)= $session->get([$oid_temperature]);
J'espère quand même que cela pourra aider certaines personnes aussi étourdies que moi