2017-09-18 11 views
-1

私はシスコのルータを持っており、どのインタフェースがLANに使用されているかを知る必要があります。このショーインタフェース記述出力されます:私はpexpectでログインし、変数に上記の出力を得ることができたが、私はそれをフィルタリングするかどうかはわかりません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 

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

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

私は結果として "Gi0/0"を持っていたいと思います。

私にいくつかアイデアを教えてください。 ありがとう!

答えて

0

私は、次のコードを使用:よりよい解決策が存在しなければならない

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] 

を。アイデアがあれば教えてください。

関連する問題