芯片资讯
你的位置:EVERLIGHT(亿光)半导体IC芯片全系列-亿配芯城 > 芯片资讯 > 通过napalm-huawei-vrp模块对华为交换机信息进行分析(ENSP模拟器)
通过napalm-huawei-vrp模块对华为交换机信息进行分析(ENSP模拟器)
- 发布日期:2024-01-16 07:24 点击次数:206
NAPALM概述:
NAPALM作为python的第三方模块,其依赖于Netmiko,但在使用时不需要单独导入Netmiko。
NAPALM的主要作用是将show或者display显示的结果转换为有序的结构类型(方便使用python进行处理分析),类似于textfsm和ntc-templates;同时,NAPALM还可以对网络设备进行配置,保存等操作。
NAPALM的最大缺点是,目前仅支持国外的主流厂商:思科、Arista、Juniper,对国内的设备的操作系统并不支持。
napalm-huawei-vrp:github地址:
复制https://github.com/napalm-automation-community/napalm-huawei-vrp
napalm-huwei-vrp模块作为NAPALM模块的补充,主要是增加了支持华为S系列园区网交换机驱动,支持S5700,S6700等的功能:
截止于2021年6月,本模块支持的功能如下:
load_merge_candidate(): 加载给定的配置文件 compare_config(): 比较候选配置(加载的配置)和当前运行配置,并显示不同点 discard_config():删除加载的配置文件 commit_config():执行加载的配置文件到设备 get_facts(): 获取设备基础信息 cli(): 发送任何命令到设备中 get_lldp_neighbors(): 获取LLDP邻居信息 get_config(): 获取配置信息 is_alive(): 返回连接状态的标志 ping(): 从设备中ping远端设备 get_arp_table(): 获取设备APR表 get_mac_address_table(): 获取设备MAC地址表 get_interfaces(): 获取接口信息 get_interfaces_ip(): 获取接口IP信息 get_interfaces_counters(): 获取接口统计信息其他功能正在逐步开发。
napalm-huawei-vrp安装:
复制pip3 install napalm pip3 install napalm-huawei-vrp实验测试:
实验环境: ENSP,IP地址规划如下,通告cloud1, 电子元器件采购网 保证运行python代码的设备能够ping通交换机。
实验目的: 检查设备的连通性,如果可以SSH(netmiko)登陆设备,则将设备标准配置和当前配置进行对比,如果有改变,则记录更改的信息。
步骤一: SW1-SW5上已经配置完了SSH,其中SW2和SW4无法正常通信。 交换机命令:
复制#创建秘钥 [sw2]dsalocal-key-paircreate ##配置SSH认证类型(密码/其他) [sw2]sshuserprinauthentication-typepassword [sw2]sshuserprinservice-typestelnet [sw2]stelnetserverenable ##配置认证模式 [sw2]user-interfacevty04 [sw2-ui-vty0-4]authentication-modeaaa//配置认证模式 [sw2-ui-vty0-4]protocolinboundssh//允许ssh连接虚拟终端 ##配置本地用户信息 [sw2]aaa [sw2-aaa]local-userprinpasswordcipherHuawei@123 [sw2-aaa]local-userprinprivilegelevel15 [sw2-aaa]local-userprinservice-typessh
步骤二: 在脚本运行的同一目录下,保存需要检查的配置文件信息(可以仅保留自己需要检查的部分配置信息):步骤三: 修改设备当前运行的部分配置文件,做测试:
SW1将设备名称修改为SW_NEW; 将SW3的Loopback0接口的IP地址undo掉; SW5配置保持不变。步骤四: 编写napalm_huawei.py脚本:
复制fromnapalmimportget_network_driver fromdatetimeimportdatetime importtime driver=get_network_driver('huawei_vrp') device_ip=['192.168.0.11','192.168.0.22','192.168.0.33','192.168.0.44','192.168.0.55'] active_devices=[] whileTrue: #找到能够连接的设备 foripindevice_ip: try: SW=driver(ip,'prin','Huawei@123') SW.open() #如果没有异常,则将IP地址添加到active_devices列表中 active_devices.append(ip) exceptExceptionase: print(ip+'连接失败') #查看配置有无更改,如果有更改,记录更改设备的IP地址,更改时间,更改的内容到记事本中 foripinactive_devices: SW=driver(ip,'prin','Huawei@123') SW.open() #加载需要对比的文件 SW.load_merge_candidate(filename='napalm_config_'+ip+'.cfg') #对加载的配置文件和当前运行配置进行比较 differences=SW.compare_config() iflen(differences)>0: #打印出给出标准配置对比当前运行配置有变动的地方 print(ip+':'+differences) #获取当前时间的字符串 now=datetime.now().strftime("%Y-%m-%d_%H-%M-%S") #将检查配置文件写入记事本中 withopen('change_config','a')asf: f.write(now+' '+ip+': '+differences+' ') #如果配置了下面一条代码,则将设备的配置信息按照提供的配置文件进行还原 #SW.commit_config() else: print(ip+':'+'配置没有修改') SW.discard_config() #每隔一小时运行一次脚本 time.sleep(3600)
测试结果: pycharm运行结果:
文本记录信息:
相关资讯