Фильтрация вывода 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]
Там должно быть лучшее решение. Если у вас есть идеи, пожалуйста, поделитесь ими.