欢迎来到亿配芯城! | 免费注册
你的位置: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通交换机。bdfcedf8-b270-11ee-8b88-92fbcf53809c.png

实验目的: 检查设备的连通性,如果可以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

步骤二: 在脚本运行的同一目录下,保存需要检查的配置文件信息(可以仅保留自己需要检查的部分配置信息):be0abfa0-b270-11ee-8b88-92fbcf53809c.png步骤三: 修改设备当前运行的部分配置文件,做测试:

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运行结果:be1258fa-b270-11ee-8b88-92fbcf53809c.png

文本记录信息:be295730-b270-11ee-8b88-92fbcf53809c.png



相关资讯