Module Net::Telnet::Cisco : exit si ça ne répond pas

Module Net::Telnet::Cisco : exit si ça ne répond pas - Perl - Programmation

Marsh Posté le 17-07-2008 à 16:36:09    

Bonjour :)
 
je fais un script avec ce module qui vérifie certains choses  
pour cela, j'ai une liste d'IP que je parcoure avec un foreach
 
le souci c'est que si l'équipement n'existe pas ou ne répond pas avant le timeout, le script s'arrête immédiatement !
 
comment faire pour que ça continue dans ma boucle ??
 
Merci


---------------
:: Light is Right ::
Reply

Marsh Posté le 17-07-2008 à 16:36:09   

Reply

Marsh Posté le 17-07-2008 à 16:38:07    

sans un morceau du code ( ton foreach par exemple ) ça va être compliqué, mais je suppose que tu dois avoir un arrêt "volontaire" sur la non-réponse qu'il te suffit d'enlever.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 17-07-2008 à 17:06:23    

voila un bout :
 

Code :
  1. my $matchop = '/(?mx:^% Unknown VPN
  2. |CDP
  3. |^%IP routing table VRF.* does not exist. Create first$
  4. |^%No CEF interface information
  5. |^%No matching route to delete$
  6. |^%Not all config may be removed and may reappear after reactivating
  7. )/';
  8. foreach $ip (@ips) {
  9.     my $session = Net::Telnet::Cisco->new(Host => $ip) or die "problem connecting to host: $ip";
  10.     $session->login('plop', 'plop');
  11.     $session->warnings($matchop);
  12.     $session->ignore_warnings( 1 );
  13.     my @output = $session->cmd('show cdp nei');
  14.     if (grep(/CDP is not enabled/, @output)) {
  15.         print "$ip: CDP is NOT enabled\n";
  16.     }
  17.     else {
  18.         print "$ip: CDP IS enabled\n";
  19.     }
  20.     $session->close;
  21. }


 
@ips est un tableau tout bête d'ip


Message édité par Tomate le 17-07-2008 à 17:07:04

---------------
:: Light is Right ::
Reply

Marsh Posté le 18-07-2008 à 09:12:43    

remplaces

Code :
  1. my $session = Net::Telnet::Cisco->new(Host => $ip) or die "problem

par un

Code :
  1. if ($session = Net::Telnet::Cisco->new(Host => $ip))
  2. {
  3.   ...
  4. }

Reply

Marsh Posté le 18-07-2008 à 19:31:14    

ok merci je teste ça lundi :jap:
ceci dit avec ou sans die le résultat est le même


Message édité par Tomate le 18-07-2008 à 19:31:41

---------------
:: Light is Right ::
Reply

Marsh Posté le 21-07-2008 à 10:20:58    

je viens de tester avec une ip bidon, et le script s'arrête au bout du timeout :/
 

problem connecting to "XXXXXX", port 23: connect timed-out at cdp.pl line 68


---------------
:: Light is Right ::
Reply

Marsh Posté le 22-07-2008 à 04:00:29    

C'est a cause du errmode de la session telnet qui est a die par défaut. Il faut le positionner à return.

Code :
  1. if ($session = Net::Telnet::Cisco->new(Host => $ip, Errmode => 'return'))


A+,


Message édité par gilou le 22-07-2008 à 04:00:55

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-07-2008 à 14:15:44    

haaaaan ça marche super merci :jap:


---------------
:: Light is Right ::
Reply

Sujets relatifs:

Leave a Replay

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