對(duì)于網(wǎng)絡(luò)運(yùn)維(也就是網(wǎng)管)而言,統(tǒng)一管理網(wǎng)絡(luò)中的設(shè)備是其最主要的需求,netconf協(xié)議就是為此而生的。使用netconf協(xié)議,我們可以通過(guò)交換機(jī)對(duì)網(wǎng)元(也就是網(wǎng)內(nèi)的計(jì)算機(jī)單元)進(jìn)行管理,提高網(wǎng)絡(luò)運(yùn)維的效率。
【原理介紹】
通過(guò)NETCONF,網(wǎng)管能夠用可視化的界面統(tǒng)一管理網(wǎng)絡(luò)中的設(shè)備,并且安全性高、可靠性強(qiáng)、擴(kuò)展性強(qiáng)。如下圖所示,網(wǎng)管與網(wǎng)絡(luò)中的所有交換機(jī)之間建立NETCONF會(huì)話,用戶即可在網(wǎng)管提供的可視化界面上對(duì)網(wǎng)絡(luò)中的所有交換機(jī)進(jìn)行統(tǒng)一的管理,提高網(wǎng)絡(luò)運(yùn)維效率。
網(wǎng)管通過(guò)NETCONF對(duì)設(shè)備進(jìn)行管理組網(wǎng)圖
【開發(fā)流程介紹】
首先進(jìn)行網(wǎng)元的配置開通netconf協(xié)議相關(guān)篇配置,然后編寫python調(diào)用netconf模塊:
【網(wǎng)元配置】
登錄ne40e的管理口,按照如下命令配置,配置說(shuō)明參見上面圖示中網(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
默認(rèn)netconf的端口是SSH端口22,也可以用如下命令修改為其他端口:
protocol inbound ssh port 830
【python代碼示例】
建議使用第三方庫(kù)ncclient實(shí)現(xiàn)netconf的調(diào)用:
1.安裝ncclient:
pip install ncclient
2.Python引用ncclient:
from ncclient import manager
3.Python通過(guò)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>
【總結(jié)】
基于以上流程和華為ne40的netconf功能介紹,可以實(shí)現(xiàn)配置獲取,配置下發(fā)等相關(guān)操作,用于企業(yè)網(wǎng)絡(luò)自動(dòng)化開發(fā)。
以上就是python怎么通過(guò)netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù)的詳細(xì)內(nèi)容,更多python網(wǎng)絡(luò)運(yùn)維的學(xué)習(xí)內(nèi)容請(qǐng)關(guān)注W3Cschool其它相關(guān)文章!