1. 程式人生 > >通過python基於netconf協議獲取網路中網元的配置資料,助力企業網路控制自動化輕鬆實現!

通過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

【話題互動有獎】

為了促進技術交流,歡迎大家積極參與話題互動有獎活動。

 

點選瞭解更多,參與話題贏取精美獎