1.经过SSH来登陆交换机,而后执行display lldp neighbor-information list
2.使用textfsm解析交换机返回的结果,结果是以下格式:python
[对端设备名, 本地端口号, 对端端口号]
3.代码
a.textfsm解析规则模板文件(h3c_lldp_list.yaml):git
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代码文件:github
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.代码执行后输出的结果:ide
交换机执行命令返回的结果: 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