Фильтрация вывода pexpect

У меня есть маршрутизатор Cisco, и мне нужно знать, какой интерфейс используется для локальной сети. Это вывод описания интерфейса show:

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 ответ

Я использовал следующий код:

    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]

Там должно быть лучшее решение. Если у вас есть идеи, пожалуйста, поделитесь ими.

Другие вопросы по тегам