首页 > 编程语言 > 详细

Python使用TextFSM 解析H3C交换机的LLDP信息

时间:2021-05-08 23:15:38      阅读:44      评论:0      收藏:0      [点我收藏+]
1.通过SSH来登录交换机,然后执行display lldp neighbor-information list
2.使用textfsm解析交换机返回的结果,结果是如下格式:

[对端设备名, 本地端口号, 对端端口号]

?

3.代码
a.textfsm解析规则模板文件(h3c_lldp_list.yaml):

Value device_id (\S+)
Value local_intf (\w+[\/|\d]{3})
Value remote_inft (\w+[\/|\d]{3})

Start
  ^System Name          Local Interface Chassis ID      Port ID
  ^${device_id}\s+${local_intf}\s+\S+\s+${remote_inft} -> Record

EOF

b.需要执行的python代码文件:

from netmiko import ConnectHandler
import textfsm

### 使用netmiko SSH登录交换机 ###
h3c_device = {
    ‘device_type‘: ‘hp_comware‘,
    ‘ip‘: ‘172.16.1.102‘,
    ‘username‘: ‘admin‘,
    ‘password‘: ‘admin‘,
}

connect = ConnectHandler(**h3c_device)
lldp_output = connect.send_command(‘display lldp neighbor-information list‘)
print(‘交换机执行命令返回的结果:‘)
print(lldp_output)
print(‘--------------------------------------------‘)

### 使用TextFSM解析交换机的输出文本 ###

# textfsm读取 匹配规则模板h3c_lldp_list.yaml
fsm = textfsm.TextFSM(open(‘h3c_lldp_list.yaml‘))
# 将交换机的LLDP输出信息 传给textfsm进行解析
fsm_results = fsm.ParseText(lldp_output)
print(‘textfsm解析结果:‘)
print(fsm_results)

?

4.代码执行后输出的结果:

交换机执行命令返回的结果:
Chassis ID : * -- -- Nearest nontpmr bridge neighbor
             # -- -- Nearest customer bridge neighbor
             Default -- -- Nearest bridge neighbor
System Name          Local Interface Chassis ID      Port ID
sw1                  GE1/0           7425-8ae3-e836  GigabitEthernet1/0         
sw3                  GE2/0           7425-8ae3-5b88  GigabitEthernet1/0         
--------------------------------------------
textfsm解析结果:
[[‘sw1‘, ‘GE1/0‘, ‘GigabitEthernet1/0‘], [‘sw3‘, ‘GE2/0‘, ‘GigabitEthernet1/0‘]]

Process finished with exit code 0

?

5.参考
Python netmiko 管理 network devices 简例
TextFSM官方文档

Python使用TextFSM 解析H3C交换机的LLDP信息

原文:https://blog.51cto.com/jackor/2762239

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!