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