Bon j'ai un peu de mal à obtenir ce que je souhaite. En faite je ne comprend pas vraiment vos morceaux de code.
Pour être plus précis, mon script envoi cette commande :
my @output = $session->cmd('show interfaces | include Ethernet.*line protocol is');
La commande :
m'affiche ceci :
1 2 3 4 5 6 7 8 9 10 11
| FastEthernet0/1 is down, line protocol is down (notconnect)
FastEthernet0/2 is down, line protocol is down (notconnect)
FastEthernet0/3 is up, line protocol is up (connected)
FastEthernet0/4 is down, line protocol is down (notconnect)
FastEthernet0/5 is up, line protocol is up (connected)
FastEthernet0/6 is down, line protocol is down (notconnect)
FastEthernet0/7 is up, line protocol is up (connected)
FastEthernet0/8 is down, line protocol is down (notconnect)
FastEthernet0/9 is down, line protocol is down (notconnect)
FastEthernet0/10 is down, line protocol is down (notconnect)
FastEthernet0/11 is up, line protocol is up (connected) |
Ensuite il faudrait que je récupère (par exemple) "FastEthernet0/9" si quelque part sur la ligne qui traite de cette information, se trouve le mot err-disabled.
Je pense que vous aviez compris mais c'est moi qui ne comprend pas vos codes xD.
j'ai testé :
1 2 3 4
| my @lignes = split(/^/, @output);
while (defined ($_ = shift @lignes)) {
print "ERR: $_ \n" if /connected/;
} |
avec comme vous le voyez une recherche sur /connected/ pour être sur de ressortir au moins un résultat, mais rien ne s'affiche lorsque j'éxécute ce code.
La première étape je pense, est de découper mon @output en ligne, de rechercher avec une expression régulière le mot err-disabled, puis de retourner dans une variable le nom de l'interface.
En faite, j'aimerai savoir comment passé une expression régulière sur mon @output. je crois que c'est plus prudent de commencer petit quand on ne connait pas trop.
Merci pour votre patience en tout cas ^^
Partager