Bonjour,
étant un habitué du php, je me suis décidé à apprendre perl plus adapté pour des scripts système que le php. Donc c'est mon premier script perl soyez pas trop dur s'il est pas très propre :-)
Le script actuel qui me pose problème me permet de faire un appel snmp pour récupérer des données.
Je vais essayer de détailler mon problème le plus simplement possible
je récupère dans une base de données une liste d'équipements dans une table de hashage : %equipement
- la clé de la table est la clé unique du tuple dans la bdd
- il y a 2 attributs : l'adresse ip et la communauté snmp
ex :
$equipement{12}{ip} ; // 127.0.0.1
$equipement{12}{community} ; // public
je récupère dans cette base de données une liste d'OID snmp pour lesquelles je dois récupérer des infos : @oid_list
une liste d'OID.
voici mon probleme :
et j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 my ($session, $error) = Net::SNMP->session( -hostname => $equipment{$equipment_id}{ip};, -community => $equipment{$equipment_id}{community}); $result = $session->get_request(-varbindlist => \@oid_list); if (! defined($session)) { printf("ERROR: %s.\n", $error); exit 1; } $session->close; #la j'affiche les résultats foreach my $oid (@oid_list) { print "[".$oid."]->[".$result->{$oid}."]\n"; }
pour toutes les lignes :
Use of uninitialized value in concatenation (.) or string at perl_poller.pl line 155.
la ligne 155 c'est celle la :
MAIS j'ai fait qq tests avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach my $oid (@oid_list) { print "[".$oid."]->[".$result->{$oid}."]\n"; }
$hostname et $community sont les valeurs issues de ma table de hashage remplie via la bdd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $hostname = $equipment{$equipment_id}{ip}; my $community = $equipment{$equipment_id}{community}; my $hostname2 = "192.168.17.11"; my $community2 = "public"; print "HOSTNAME : $equipment{$equipment_id}{ip} / COMMUNITY : $equipment{$equipment_id}{community}\n"; print "HOSTNAME 2 : $hostname2 / COMMUNITY2 : $community2\n";
$hostname2 et $community2 sont les memes valeurs entrées en DUR.
dans les 2 cas ca s'affiche correctement :
par contre :print "HOSTNAME : $equipment{$equipment_id}{ip} / COMMUNITY : $equipment{$equipment_id}{community}\n";
print "HOSTNAME 2 : $hostname2 / COMMUNITY2 : $community2\n";
La j'ai toujours la meme erreur
La ca marche sans soucis, il va bien chercher la variable SNMP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my ($session, $error) = Net::SNMP->session( -hostname => $hostname, -community => $community);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my ($session, $error) = Net::SNMP->session( -hostname => $hostname2, -community => $community2);
Je comprends pas les 2 variables s'affichent et contiennent la meme chose.
qqn aurait une solution ?
Partager