[résolu][PERL]variable bizzare

variable bizzare [résolu][PERL] - Perl - Programmation

Marsh Posté le 07-04-2006 à 18:32:13    

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 :  
 

Code :
  1. my ($session, $error) = Net::SNMP->session(
  2.   -hostname => $equipment{$equipment_id}{ip};,
  3.   -community => $equipment{$equipment_id}{community});
  4. $result = $session->get_request(-varbindlist => \@oid_list);
  5. if (! defined($session)) { printf("ERROR: %s.\n", $error); exit 1; }
  6. $session->close;
  7. #la j'affiche les résultats
  8. foreach my $oid (@oid_list) { print "[".$oid."]->[".$result->{$oid}."]\n"; }


 
et j'ai l'erreur suivante :  
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 :

Code :
  1. foreach my $oid (@oid_list) { print "[".$oid."]->[".$result->{$oid}."]\n"; }


 
MAIS j'ai fait qq tests avec le code suivant :  
 
 

Code :
  1. my $hostname = $equipment{$equipment_id}{ip};
  2. my $community = $equipment{$equipment_id}{community};
  3. my $hostname2 = "192.168.17.11";
  4. my $community2 = "public";
  5. print "HOSTNAME : $equipment{$equipment_id}{ip} / COMMUNITY : $equipment{$equipment_id}{community}\n";
  6. print "HOSTNAME 2 : $hostname2 / COMMUNITY2 : $community2\n";


 
$hostname et $community sont les valeurs issues de ma table de hashage  remplie via la bdd
 
$hostname2 et $community2 sont les memes valeurs entrées en DUR.
 
dans les 2 cas ca s'affiche correctement :  
 

Citation :

print "HOSTNAME : $equipment{$equipment_id}{ip} / COMMUNITY : $equipment{$equipment_id}{community}\n";
 print "HOSTNAME 2 : $hostname2 / COMMUNITY2 : $community2\n";


 
par contre :  
La j'ai toujours la meme erreur

Code :
  1. my ($session, $error) = Net::SNMP->session(
  2.   -hostname => $hostname,
  3.   -community => $community);


La ca marche sans soucis, il va bien chercher la variable SNMP

Code :
  1. my ($session, $error) = Net::SNMP->session(
  2.   -hostname => $hostname2,
  3.   -community => $community2);


 
 
Je comprends pas les 2 variables s'affichent et contiennent la meme chose.
 
qqn aurait une solution ?


Message édité par tifrere le 08-04-2006 à 01:02:03
Reply

Marsh Posté le 07-04-2006 à 18:32:13   

Reply

Marsh Posté le 08-04-2006 à 01:02:44    

update
 
bon j'ai fait des tests, relu mon script
 
en fait une accolade mal placée faisaient que des variables ne s'initialisaient pas
 
maintenant ca marche :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed