通过napalm-huawei-vrp模块对华为交换机信息进行分析(ENSP模拟器)

NAPALM概述:

NAPALM作为python的第三方模块,其依赖于Netmiko,但在使用时不需要单独导入Netmiko。

NAPALM的主要作用是将show或者display显示的结果转换为有序的结构类型(方便使用python进行处理分析),类似于textfsm和ntc-templates;同时,NAPALM还可以对网络设备进行配置,保存等操作。

NAPALM的最大缺点是,目前仅支持国外的主流厂商:思科、Arista、Juniper,对国内的设备的操作系统并不支持。

NAPALM具体操作详解请参照:
https://zhuanlan.zhihu.com/p/140919905
https://zhuanlan.zhihu.com/p/141226816

napalm-huawei-vrp:

github地址:https://github.com/napalm-automation-community/napalm-huawei-vrp

napalm-huwei-vrp模块作为NAPALM模块的补充,主要是增加了支持华为S系列园区网交换机驱动,支持S5700,S6700等的功能:

截止于2021年6月,本模块支持的功能如下:

  1. load_merge_candidate(): 加载给定的配置文件
  2. compare_config(): 比较候选配置(加载的配置)和当前运行配置,并显示不同点
  3. discard_config():删除加载的配置文件
  4. commit_config():执行加载的配置文件到设备
  5. get_facts(): 获取设备基础信息
  6. cli(): 发送任何命令到设备中
  7. get_lldp_neighbors(): 获取LLDP邻居信息
  8. get_config(): 获取配置信息
  9. is_alive(): 返回连接状态的标志
  10. ping(): 从设备中ping远端设备
  11. get_arp_table(): 获取设备APR表
  12. get_mac_address_table(): 获取设备MAC地址表
  13. get_interfaces(): 获取接口信息
  14. get_interfaces_ip(): 获取接口IP信息
  15. 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]dsa local-key-pair create

## 配置SSH认证类型(密码/其他)
[sw2]ssh user prin authentication-type password
[sw2]ssh user prin service-type stelnet
[sw2]stelnet server enable

## 配置认证模式
[sw2]user-interface vty 0 4
[sw2-ui-vty0-4]authentication-mode aaa  //配置认证模式
[sw2-ui-vty0-4]protocol inbound ssh     //允许 ssh 连接虚拟终端

## 配置本地用户信息
[sw2]aaa
[sw2-aaa] local-user prin password cipher Huawei@123
[sw2-aaa]local-user prin privilege level 15
[sw2-aaa] local-user prin service-type ssh

步骤二: 在脚本运行的同一目录下,保存需要检查的配置文件信息(可以仅保留自己需要检查的部分配置信息):
在这里插入图片描述
步骤三: 修改设备当前运行的部分配置文件,做测试:

  1. SW1将设备名称修改为SW_NEW;
  2. 将SW3的Loopback0接口的IP地址undo掉;
  3. SW5配置保持不变。

步骤四: 编写napalm_huawei.py脚本:

from napalm import get_network_driver
from datetime import datetime
import time

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 = []

while True:
    # 找到能够连接的设备
    for ip in device_ip:
        try:
            SW = driver(ip, 'prin', 'Huawei@123')
            SW.open()
            # 如果没有异常,则将IP地址添加到active_devices列表中
            active_devices.append(ip)
        except Exception as e:
            print(ip + '连接失败')

    # 查看配置有无更改,如果有更改,记录更改设备的IP地址,更改时间,更改的内容到记事本中
    for ip in active_devices:
        SW = driver(ip, 'prin', 'Huawei@123')
        SW.open()
        # 加载需要对比的文件
        SW.load_merge_candidate(filename='napalm_config_' + ip + '.cfg')
        # 对加载的配置文件和当前运行配置进行比较
        differences = SW.compare_config()
        if len(differences) > 0:
            # 打印出给出标准配置对比当前运行配置有变动的地方
            print(ip + ':' + differences)
            # 获取当前时间的字符串
            now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
            # 将检查配置文件写入记事本中
            with open('change_config', 'a') as f:
                f.write(now + '\n\t' + ip + ':\n\t' + differences + '\n')
            # 如果配置了下面一条代码,则将设备的配置信息按照提供的配置文件进行还原
            # SW.commit_config()
        else:
            print(ip + ':' + '配置没有修改')
            SW.discard_config()
    # 每隔一小时运行一次脚本
    time.sleep(3600)


测试结果:
pycharm运行结果:
在这里插入图片描述

文本记录信息:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格洛米爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值