分享

让华为设备跟上自动化的步伐,学会Python配置NETCONF,运维不再难!

 攻城狮成长日志 2024-04-27 发布于广东

在当今数字化时代,网络设备的自动化管理已经成为了不可或缺的趋势。对于华为设备的运维人员来说,学会利用Python配置NETCONF已经成为提高工作效率、降低运维成本的必备技能。本文将介绍如何利用PythonNETCONF来实现华为设备的自动化配置,让运维工作变得更加高效、简便。

什么是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编写的脚本可以轻松地与各种设备进行交互,并实现自动化的配置和管理。结合PythonNETCONF,可以实现对华为设备的高效自动化管理。

如何学习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成功登录。

安装相关库

首先,需要安装PythonNETCONF库,例如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官网[1],从官网上了解到对华为设备主要支持两种类型。如下图:

3. 运行脚本

保存以上代码为configure_huawei.py,然后在命令行中运行该脚本,即可实现对华为设备的自动化配置。

python configure_huawei.py

执行成功后,会返回如下信息,如下图:运行成功后,查看交换机设备的配置,已经生效了,如下图:

结语

通过学习Python配置NETCONF,华为设备的运维工作变得更加高效、简便。利用自动化配置,可以大大减少手工操作的工作量,提高运维人员的工作效率,同时降低了配置错误的风险。让我们一起跟上自动化的步伐,让华为设备的管理变得更加轻松!更多关于netconf的内容可以参考这篇文章[2]

Reference

[1]

华为netconf教程: https://support.huawei.com/enterprise/zh/doc/EDOC1100335707/877aa431#ZH-CN_TOPIC_0000001564122049

[2]

Huawei_Netconf_Ncclient : https://www.cnblogs.com/yizhangheka/p/17253323.html

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多