写点什么

通过 python 基于 netconf 协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

发布于: 2020 年 11 月 27 日

摘要:在当今信息化时代,大多数企业都需要网络支撑企业的 ICT 运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网络的运行状态可视化,网络配置自动化等,如下就以华为的 NE40E 网元为例,说明如何通过 python 基于 netconf 协议实现对于网元配置数据的获取。

【原理介绍】

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

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



【开发流程介绍】

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



【网元配置】

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



system-viewaaalocal-user netconf001 password irreversible-cipher Root@123local-user netconf001 service-type sshlocal-user netconf001 user-group manage-ug ssh user netconf001ssh user netconf001 authentication-type passwordssh user netconf001 service-type allsnetconf 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

【话题互动有奖】

为了促进技术交流,欢迎大家积极参与话题互动有奖活动。



点击了解更多,参与话题赢取精美奖品!


发布于: 2020 年 11 月 27 日阅读数: 339
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!