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


    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的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

    【话题互动有奖】

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

     

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

  • 相关阅读:
    noip2011 总结
    noip2010 总结
    noip2009 总结
    noip2008 总结
    noip2006总结
    noip2007 总结
    noip2006 总结
    【模板】线段树模板
    【数学】8.30题解-count数页码
    【数论】8.30题解-prime素数密度 洛谷p1835
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/14046476.html
Copyright © 2020-2023  润新知