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运行结果:
文本记录信息:
-
华为
+关注
关注
216文章
34530浏览量
252593 -
交换机
+关注
关注
21文章
2656浏览量
99989 -
模拟器
+关注
关注
2文章
881浏览量
43346
原文标题:通过napalm-huawei-vrp模块对华为交换机信息进行分析(ENSP模拟器)
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论