在当今数字化时代,网络设备的自动化管理已经成为了不可或缺的趋势。对于华为设备的运维人员来说,学会利用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官网,从官网上了解到对华为设备主要支持两种类型。如下图:

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 - 张贺贺呀 - 博客园

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐