让华为设备跟上自动化的步伐,学会Python配置NETCONF,运维不再难!
是一种网络设备配置协议,它采用XML格式来描述配置信息,并通过安全的SSH连接来传输数据。相比传统的CLI(命令行界面)配置,NETCONF具有更强大、更灵活的配置能力,可以实现对设备的批量配置和管理。通过学习Python配置NETCONF,华为设备的运维工作变得更加高效、简便。利用自动化配置,可以大大减少手工操作的工作量,提高运维人员的工作效率,同时降低了配置错误的风险。让我们一起跟上自动化的步
在当今数字化时代,网络设备的自动化管理已经成为了不可或缺的趋势。对于华为设备的运维人员来说,学会利用Python
配置NETCONF
已经成为提高工作效率、降低运维成本的必备技能。本文将介绍如何利用Python
和NETCONF
来实现华为设备的自动化配置,让运维工作变得更加高效、简便。
什么是NETCONF?
NETCONF(Network Configuration Protocol)
是一种网络设备配置协议,它采用XML格式来描述配置信息,并通过安全的SSH连接来传输数据。相比传统的CLI(命令行界面)配置,NETCONF
具有更强大、更灵活的配置能力,可以实现对设备的批量配置和管理。
NETCONF网络架构
NETCONF基本网络架构如下图所示,整套系统必须包含至少一个NMS(Network Management System)
作为整个网络的网管中心,NMS运行在NMS服务器上,对设备进行管理。
NETCONF报文格式
一个完整的NETCONF请求报文结构如下图所示:
NETCONF请求报文由三部分组成,以及各字段含义如所示:
- Message:消息层,为RPC报文提供一个简单的,独立的传输帧机制。客户端把RPC请求封装在一个元素内,服务器把请求处理的结果封装在元素内,回应给客户。
- Operations:操作层,定义了一组基本NETCONF协议操作,被带有基于XML编码参数的RPC方法调用。
- Content:管理对象层,定义了配置数据模型,目前主流的数据模型有YANG模型等
为什么选择Python?
Python
作为一种简洁而强大的编程语言,广泛应用于自动化领域。利用Python编写的脚本可以轻松地与各种设备进行交互,并实现自动化的配置和管理。结合Python
和NETCONF
,可以实现对华为设备的高效自动化管理。
如何学习Python配置NETCONF?
搭建网络环境
这里采用华为的ENSP模拟器,并采用CE设备模拟环境。使用拓扑如下图:
- 将本地电脑和ENSP的设备进行交接,桥接配置如下图所示:
- 配置交换机的IP地址,关键配置如下:
<X_T1_AGG1>system-view immediately
[X_T1_AGG1]sysname X_T1_AGG1
[X_T1_AGG1]interface Vlanif 1
[X_T1_AGG1-Vlanif1]ip add 192.168.56.10 24
[X_T1_AGG1-Vlanif1]q
[X_T1_AGG1]interface g1/0/0
[X_T1_AGG1-GE1/0/0]undo shutdown
- 测试本机与CE设备的连通性,通过
ping
命令测试,如下图:
- 配置CE设备SSH远程登录,关键配置如下:
- 创建SSH登录账号,并设置权限
[X_T1_AGG1-aaa]local-user dev_user password cipher Huawei@123
Info: A new user is added.
[X_T1_AGG1-aaa]local-user dev_user service-type ssh
[X_T1_AGG1-aaa]local-user dev_user level 3
[X_T1_AGG1-aaa]undo local-user policy security-enhance // 禁止第一次登录修改密码策略
[X_T1_AGG1-aaa]undo local-user policy password change // 禁止第一次登录修改密码策略
[X_T1_AGG1-aaa]q
[X_T1_AGG1]netconf
[X_T1_AGG1-netconf]protocol inbound ssh port 830
- 在CE设备上配置SSH用户的认知方式和服务类型:
[X_T1_AGG1]ssh user dev_user
Info: Succeeded in adding a new SSH user.
[X_T1_AGG1]ssh user dev_user authentication-type password
[X_T1_AGG1]ssh user dev_user service-type stelnet snetconf
- 配置VTY用于登录方式,及开启stelent服务
[X_T1_AGG1]user-interface vty 0 4
[X_T1_AGG1-ui-vty0-4]authentication-mode aaa
[X_T1_AGG1-ui-vty0-4]protocol inbound all
[X_T1_AGG1-ui-vty0-4]user privilege level 3
- 测试SSH是否正常登录。如下图展示,SSH成功登录。
安装相关库
首先,需要安装Python
的NETCONF
库,例如ncclient
。可以通过pip来进行安装:
pip install ncclient
2. 编写Python脚本
接下来,编写Python脚本来实现对华为设备的配置。以下是一个简单的示例脚本,用于连接到设备并配置接口IP地址:
from ncclient import manager
# 设备信息
hostname = '192.168.56.10'
username = 'dev_user'
password = 'Huawei@123'
# NETCONF连接
with manager.connect(host=hostname, username=username,hostkey_verify=False, password=password, port=830, device_params={'name': 'huawei'}) as m:
# 构建XML配置
interface_xml = """
<config>
<ethernet xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
<ethernetIfs>
<ethernetIf operation="merge">
<ifName>GE1/0/2</ifName>
<l2Enable>disable</l2Enable>
</ethernetIf>
</ethernetIfs>
</ethernet>
<ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
<interfaces>
<interface operation="merge">
<ifName>Loopback0</ifName>
<ifDescr>Config by NETCONF</ifDescr>
<ifmAm4>
<am4CfgAddrs>
<am4CfgAddr operation="create">
<subnetMask>255.255.255.255</subnetMask>
<addrType>main</addrType>
<ifIpAddr>1.1.1.1</ifIpAddr>
</am4CfgAddr>
</am4CfgAddrs>
</ifmAm4>
</interface>
</interfaces>
</ifm>
</config>
"""
# 应用配置
m.edit_config(target='running', config=interface_xml)
print("配置成功!")
上述XML的内容主要做了两件事情:
- 把
GE1/0/2
接口二层的功能关闭- 配置
Loopback0
配置IP地址为1.1.1.1
关于XML的语法可以查看netconf
的官网,从官网上了解到对华为设备主要支持两种类型。如下图:
3. 运行脚本
保存以上代码为configure_huawei.py
,然后在命令行中运行该脚本,即可实现对华为设备的自动化配置。
python configure_huawei.py
执行成功后,会返回如下信息,如下图:
运行成功后,查看交换机设备的配置,已经生效了,如下图:
结语
通过学习Python配置NETCONF,华为设备的运维工作变得更加高效、简便。利用自动化配置,可以大大减少手工操作的工作量,提高运维人员的工作效率,同时降低了配置错误的风险。让我们一起跟上自动化的步伐,让华为设备的管理变得更加轻松!
参考文档:
H3C 使用NETCONF配置设备操作指导书-6W103-新华三集团-H3C
https://support.huawei.com/enterprise/zh/doc/EDOC1100335707/877aa431#ZH-CN_TOPIC_0000001564122049
Huawei_Netconf_Ncclient - 张贺贺呀 - 博客园
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)