摘要:在當今信息化時代,大多數企業都需要網絡支撐企業的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功能介紹,可以實現配置獲取,配置下發等相關操作,用於企業網絡自動化開發。
【話題互動有獎】
為了促進技術交流,歡迎大家積極參與話題互動有獎活動。