2017-09-18 4 views
-1

J'ai un routeur Cisco et j'ai besoin de savoir quelle interface est utilisée pour le LAN. Ceci est la montrer la description de l'interface sortie:Filtrage de la sortie pexpect

R1#sho int desc 
Interface      Status   Protocol Description 
Em0/0       admin down  down 
Gi0/0       up    up  LAN 
Gi0/1       up    up  WAN 
Gi0/2       up    up  Crosslink 
Gi0/2.100      up    up  Crosslink 

J'ai réussi à se connecter avec pexpect et obtenir la sortie ci-dessus dans une variable, mais je ne suis pas sûr de savoir comment le filtrer:

execute.send('term len 0\n') 
execute.expect(device['name'] + '#') 

execute.send('sho int desc\n') 
execute.expect(device['name'] + '#') 
output = execute.before 

Je voudrais avoir "Gi0/0" en conséquence.

Pourriez-vous me donner quelques idées? Merci!

Répondre

0

J'ai utilisé le code suivant:

execute.send('sho int desc\n') 
    execute.expect(device['name'] + '#') 
    output = execute.before 

    for line in output.splitlines(): 
     if re.match('.*LAN.*', line): 
      interfaceName = re.findall(r'[^\s]+' ,line)[0] 

Il doit y avoir une meilleure solution. Si vous avez des idées, partagez-les.