4

我是 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()

这很好地得到了我需要的东西,但我想做的是过滤输出。在接口描述中,我们有与其相关的客户电路的电路 ID。例如,一个接口描述可能如下所示:

描述客户/ A56I0

我们所有的电路 ID 看起来都是这样的,我想要做的是过滤打印输出,只包括那些而不包括其他任何东西。澄清一下,如果界面上的整行显示为“description 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
4

2 回答 2

1

如果最后 5 个字符是 ID则可以通过以下代码完成

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()
于 2019-11-01T16:18:35.070 回答
1

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()
于 2019-11-01T16:58:58.870 回答