Фильтрация вывода Python - PullRequest
4 голосов
/ 01 ноября 2019

Я новичок в программировании на Python, поэтому, пожалуйста, потерпите меня. Я сетевой инженер, и я играю с Netmiko, чтобы получить некоторую информацию от наших маршрутизаторов и коммутаторов. Я запустил следующий код для извлечения описаний интерфейсов из наших блоков:

from netmiko import ConnectHandler

device = ConnectHandler(device_type='cisco_ios', ip='1.2.3.4', username='user', password='password')
output = device.send_command("show run | i description")
print (output)
device.disconnect()

Это хорошо работало, чтобы получить то, что мне нужно, но я пытаюсь фильтровать вывод. В описаниях интерфейсов у нас есть идентификаторы каналов наших клиентских каналов, к которым они относятся. Например, одно описание интерфейса может выглядеть следующим образом:

description Customer / A56I0

Все наши идентификаторы цепей выглядят примерно так, и я пытаюсь отфильтровать распечатанные данные. положить, чтобы включить только те, а не что-нибудь еще. Чтобы уточнить, если вся строка на интерфейсе гласит «описание Customer / A56I0», я бы хотел, чтобы мой вывод читал только «A56I0». Как мне это сделать?

**** РЕДАКТИРОВАТЬ ****

Он пример того, что выводит скрипт выше:

description Customer/Order A79PD
description Customer/Order A79PF
description Customer/Order AA6VG
description Customer/Order A79PE
description Customer/Order A79PC
description Customer/Order AA6VV
description Customer/Order A79PJ
description Customer/Order A79PB
description Customer/Order AA6VA

Что яПопытка сделать это - получить только последние 5 символов для каждой строки, которую она вытягивает, чтобы она выглядела так:

A79PD
A79PF
AA6VG
A79PE
A79PC
AA6VV
A79PJ
A79PB
AA6VA

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Используйте splitlines() на выходе. Вы получите список, зациклите его и print(line[-5])

    from netmiko import ConnectHandler device =
     ConnectHandler(device_type='cisco_ios', ip='1.2.3.4',
    username='user', password='password')

    output = device.send_command("show run | i description")

    for i in output.splitlines(): 
        print(i.split()[-1])
    device.disconnect()
1 голос
/ 01 ноября 2019

, если последние 5 символов являются идентификатором , это можно сделать с помощью следующего кода

from netmiko import ConnectHandler

device = ConnectHandler(device_type='cisco_ios', ip='1.2.3.4', username='user', password='password')
output = device.send_command("show run | i description")
#Change here
for i in output.splitlines():
    print (i[-5:])
device.disconnect()
...