溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python如何通過netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù)

發(fā)布時間:2022-02-19 14:16:17 來源:億速云 閱讀:149 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下python如何通過netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

對于網(wǎng)絡(luò)運維(也就是網(wǎng)管)而言,統(tǒng)一管理網(wǎng)絡(luò)中的設(shè)備是其最主要的需求,netconf協(xié)議就是為此而生的。使用netconf協(xié)議,我們可以通過交換機對網(wǎng)元(也就是網(wǎng)內(nèi)的計算機單元)進行管理,提高網(wǎng)絡(luò)運維的效率。

【原理介紹】

通過NETCONF,網(wǎng)管能夠用可視化的界面統(tǒng)一管理網(wǎng)絡(luò)中的設(shè)備,并且安全性高、可靠性強、擴展性強。如下圖所示,網(wǎng)管與網(wǎng)絡(luò)中的所有交換機之間建立NETCONF會話,用戶即可在網(wǎng)管提供的可視化界面上對網(wǎng)絡(luò)中的所有交換機進行統(tǒng)一的管理,提高網(wǎng)絡(luò)運維效率。

網(wǎng)管通過NETCONF對設(shè)備進行管理組網(wǎng)圖。

【開發(fā)流程介紹】

首先進行網(wǎng)元的配置開通netconf協(xié)議相關(guān)篇配置,然后編寫python調(diào)用netconf模塊

【網(wǎng)元配置】

登錄ne40e的管理口,按照如下命令配置,配置說明參見上面圖示中網(wǎng)元配置

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實現(xiàn)netconf的調(diào)用:

1.安裝ncclient:

pip install ncclient

2.Python引用ncclient:

from ncclient import manager

3.Python通過netconf的get能力獲取網(wǎng)元的接口狀態(tài)信息:

#建立連接
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)
#設(shè)定獲取端口的狀態(tài)信息(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調(diào)用
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>

以上是“python如何通過netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI