[PERL] Rendre une erreur non bloquante [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
15 novembre 2007
-
 clody -
Salut,
J'execute plusieurs commandes telnet sur un switch cisco depuis un script en PERL afin de recuperer plusieurs fichiers.

Selon le modele de switch/routeur ciblé, certains fichiers ne sont pas present, or le script renvoi à ce moment là une erreur et s'arrete.
Ma question est donc la suivante : " Comment faire pour que le script execute les commandes suivantes sans s'interrompre apres l'erreur ? "

Voici la commande qui bloque selon le materiel ciblé:

 # Enable mode
  if ($session->enable("cisco") ) {
      @output2 = $session->cmd('show privilege');
      print "My privileges: @output\n";
  } else {
      warn "Can't enable: " . $session->errmsg;
  }

  # Execute a command  
  my @output2 = $session->cmd("copy flash:vlan.dat tftp://$backup_host/$device-vlan.dat\n\n\n");
  print @output2;


Merci d'avance ...

9 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
Et si tu fait comme ça?
my @output2 = $session->cmd("copy flash:vlan.dat
                t[ftp://]$backup_host/$device-vlan.dat\n\n\n")
                or warn "E/S : $!\n";
ou
print @output2 if @output2;
--
lami20j
Messages postés
16
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
15 novembre 2007
2
Merci pour la réponse ! Mais malheureusement ça ne fonctionne pas.

Last command and router error

%Error opening flash:vlan.dat (No such file or directory) at C:\test\telnet_cisco.pl line 83


Le programme s'arrete dès que le routeur lui renvoit l'erreur, il n'a pas le temps d'aller jusqu'au 'warn' ou 'print output'...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
C'est quoi le module que tu utilises?
Messages postés
16
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
15 novembre 2007
2
Net::Telnet::Cisco;

J'ai fait pas mal de recherches dans les docs sur ce module, mais je n'ai rien trouvé qui solutionne mon probleme jusqu'à present...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
Je vais jeter un coup d'oeil ;-)
Messages postés
16
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
15 novembre 2007
2
Merci !

J'avais trouvé quelques infos à cette adresse http://noc.tele.dk/Cisco.pm

mais j'ai peur de comprendre que ça n'est tout simplement pas faisable !


#
# PUBLIC CMD
#
# @results = $cisco->cmd($command [, $timeout]);
#
# Send "$command" to the remote Cisco, return the results in an
# array of lines. Prompt and command-echo are stripped.
# Error is reset.
#
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
mais j'ai peur de comprendre que ça n'est tout simplement pas faisable !

as-tu essayé avec eval?
$x = 0;
eval{ 
     $res = 1 / $x ;
     print "je ne peux pas continuer\n";
};

if ($@){
  print "Division par zero\n";   #exemple de traitement
}
print "Je continue le script\n";

Messages postés
16
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
15 novembre 2007
2
$x = 0;
eval{
$res = 1 / $x ;
print "je ne peux pas continuer\n";
};

if ($@){
print "Division par zero\n"; #exemple de traitement
}
print "Je continue le script\n";


--
lami20j


Possible ! Mais je manque de temps pour me lancer là dedans pour l'instant.
Comme je n'ai que deux types de materiel different à tester, j'ai plutot crée deux routines distinctes, et je viens preciser le type de materiel en parametre au lancement du script pour lancer l'une ou l'autre.

Merci en tout cas pour ton aide, je finirai sans doute par le modifier le script avec ces indications ;)
je voulais installer une webcam et par mégarde j'ai coché (à 3ème demande) bloquer en cochant retenir la réponse - impossible d'installer un message me fait savoir que l'utilisateur à bloquer l'installation - comment débloquer - merci beaucoup