解读python基于netconf协议获取网元的数据

 更新时间:2021年05月18日 11:18:29   作者:华为云开发者社区  
大多数企业都需要网络支撑企业的ICT运行,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,如下就以华为的NE40E网元为例,说明如何通过python基于netconf协议实现对于网元配置数据的获取。

【原理介绍】

通过NETCONF,网管能够用可视化的界面统一管理网络中的设备,并且安全性高、可靠性强、扩展性强。如下图所示,网管与网络中的所有交换机之间建立NETCONF会话,用户即可在网管提供的可视化界面上对网络中的所有交换机进行统一的管理,提高网络运维效率。

网管通过NETCONF对设备进行管理组网图

【开发流程介绍】

首先进行网元的配置开通netconf协议相关篇配置,然后编写python调用netconf模块:

【网元配置】

登录ne40e的管理口,按照如下命令配置,配置说明参见上面图示中网元配置

system-view
aaa
local-user netconf001 password irreversible-cipher Root@123
local-user netconf001 service-type ssh
local-user netconf001 user-group manage-ug 
ssh user netconf001
ssh user netconf001 authentication-type password
ssh user netconf001 service-type all
snetconf server enable

默认netconf的端口是SSH端口22,也可以用如下命令修改为其他端口:

protocol inbound ssh port 830

【python代码示例】

建议使用第三方库ncclient实现netconf的调用:

1.安装ncclient:

pip install ncclient

2.Python引用ncclient:

from ncclient import manager

3.Python通过netconf的get能力获取网元的接口状态信息:

#建立连接
conn = manager.connect(host="10.10.10.10", port=22,
                                    username="netconf001", password="Root@123",
                                    hostkey_verify=False,
                                    device_params={'name': 'huawei'},
                                    allow_agent=False,
                                    look_for_keys=False)
#设定获取端口的状态信息(down或者up)
message = '''<ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
                  <interfaces>
                      <interface>
                          <ifName/>
                          <ifDynamicInfo>
                              <ifPhyStatus/>
                              <ifLinkStatus/>
                          </ifDynamicInfo>
                      </interface>
                  </interfaces>
              </ifm>'''
#get调用
ret = conn.get(("subtree", message ))
#打印返回的信息
print(ret)

4.返回信息参加如下样例,可以看到端口GigabitEthernet0/0/0是up:

<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="urn:uuid:ec1e9c29-5ff6-4582-8880-e887ceb8c512" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <data>
    <ifm xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0">
      <interfaces>
        <interface>
          <ifName>GigabitEthernet0/0/0</ifName>
          <ifDynamicInfo>
            <ifPhyStatus>up</ifPhyStatus>
            <ifLinkStatus>up</ifLinkStatus>
          </ifDynamicInfo>
        </interface>
      </interfaces>
    </ifm>
  </data>
</rpc-reply>

【总结】

基于以上流程和华为ne40的netconf功能介绍,可以实现配置获取,配置下发等相关操作,用于企业网络自动化开发。

ne40e的netconf相关资料参见链接:https://support.huawei.com/hedex/hdx.do?lib=EDOC1100168803AZJ11174&docid=EDOC1100168803&lang=zh&v=03&tocLib=EDOC1100168803AZJ11174&tocV=03&id=ZH-CN_CONCEPT_0139427194&tocURL=resources%2525252Fsoftware%2525252Fnev8r10_vrpv8r16%2525252Fuser%2525252Fvrp%2525252Ffeature_0003993139.html&p=t&fe=1&ui=3&keyword=netconf%2525252525u539f%2525252525u7406

以上就是解读python基于netconf协议获取网元的数据的详细内容,更多关于python的资料请关注脚本之家其它相关文章!

相关文章

  • Python网络编程之Python编写TCP协议程序的步骤

    Python网络编程之Python编写TCP协议程序的步骤

    这篇文章主要介绍了Python网络编程编写TCP协议程序的开发步骤,通过实例代码介绍了TCP客户端程序开发,案例讲解多任务版TCP服务端程序开发,需要的朋友可以参考下
    2022-11-11
  • 使用Python实现简单的人脸识别功能(附源码)

    使用Python实现简单的人脸识别功能(附源码)

    Python中实现人脸识别功能有多种方法,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的,本文给大家分享使用Python实现简单的人脸识别功能的操作步骤,感兴趣的朋友一起看看吧
    2021-12-12
  • Python 网页请求之requests库的使用详解

    Python 网页请求之requests库的使用详解

    requests 是 Python 中比较常用的网页请求库,主要用来发送 HTTP 请求,在使用爬虫或测试服务器响应数据时经常会用到,使用起来十分简洁,这篇文章主要介绍了Python 网页请求之requests库的使用详解,需要的朋友可以参考下
    2022-09-09
  • 关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题

    关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribu

    这篇文章主要介绍了pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 解决,需要的朋友可以参考下
    2020-11-11
  • 将本地Python项目打包成docker镜像上传到服务器并在docker中运行

    将本地Python项目打包成docker镜像上传到服务器并在docker中运行

    Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行,这篇文章主要给大家介绍了关于将本地Python项目打包成docker镜像上传到服务器并在docker中运行的相关资料,需要的朋友可以参考下
    2023-12-12
  • 教你使用Python实现一个简易版Web服务器

    教你使用Python实现一个简易版Web服务器

    这篇文章主要介绍了教你使用Python实现一个简易版Web服务器,本篇文章将通过实现一个简易版的Web服务器,帮助读者理解Python网络编程的基本概念和技巧,需要的朋友可以参考下
    2023-04-04
  • python目标检测SSD算法预测部分源码详解

    python目标检测SSD算法预测部分源码详解

    这篇文章主要为大家介绍了python目标检测SSD算法预测部分源码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python中文乱码不着急,先看懂字节和字符

    python中文乱码不着急,先看懂字节和字符

    这篇文章主要介绍了python中文乱码不着急,先看懂字节和字符,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 关于Python包导入报错的问题总结

    关于Python包导入报错的问题总结

    这篇文章主要介绍了关于Python包导入报错的问题总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python实战教程之自动扫雷

    python实战教程之自动扫雷

    用python实现扫雷,非常有意思,这篇文章主要给大家介绍了关于python实现自动扫雷的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论