过滤pexpect输出

时间:2017-09-18 12:38:30

标签: pexpect

我有一台Cisco路由器,我需要知道哪个接口用于LAN。这是 show interface description 输出:

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

我设法使用pexpect登录并将上述输出变为变量,但我不确定如何过滤它:

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"结果。

你可以给我一些想法吗? 谢谢!

1 个答案:

答案 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]

必须有更好的解决方案。如果您有任何想法,请分享。