NAPALM概述:
NAPALM作為python的第三方模塊,其依賴于Netmiko,但在使用時(shí)不需要單獨(dú)導(dǎo)入Netmiko。
NAPALM的主要作用是將show或者display顯示的結(jié)果轉(zhuǎn)換為有序的結(jié)構(gòu)類型(方便使用python進(jìn)行處理分析),類似于textfsm和ntc-templates;同時(shí),NAPALM還可以對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行配置,保存等操作。
NAPALM的最大缺點(diǎn)是,目前僅支持國(guó)外的主流廠商:思科、Arista、Juniper,對(duì)國(guó)內(nèi)的設(shè)備的操作系統(tǒng)并不支持。
napalm-huawei-vrp:
github地址:
https://github.com/napalm-automation-community/napalm-huawei-vrp
napalm-huwei-vrp模塊作為NAPALM模塊的補(bǔ)充,主要是增加了支持華為S系列園區(qū)網(wǎng)交換機(jī)驅(qū)動(dòng),支持S5700,S6700等的功能:
截止于2021年6月,本模塊支持的功能如下:
- load_merge_candidate(): 加載給定的配置文件
- compare_config(): 比較候選配置(加載的配置)和當(dāng)前運(yùn)行配置,并顯示不同點(diǎn)
- discard_config():刪除加載的配置文件
- commit_config():執(zhí)行加載的配置文件到設(shè)備
- get_facts(): 獲取設(shè)備基礎(chǔ)信息
- cli(): 發(fā)送任何命令到設(shè)備中
- get_lldp_neighbors(): 獲取LLDP鄰居信息
- get_config(): 獲取配置信息
- is_alive(): 返回連接狀態(tài)的標(biāo)志
- ping(): 從設(shè)備中ping遠(yuǎn)端設(shè)備
- get_arp_table(): 獲取設(shè)備APR表
- get_mac_address_table(): 獲取設(shè)備MAC地址表
- get_interfaces(): 獲取接口信息
- get_interfaces_ip(): 獲取接口IP信息
- get_interfaces_counters(): 獲取接口統(tǒng)計(jì)信息
其他功能正在逐步開發(fā)。
napalm-huawei-vrp安裝:
pip3 install napalm
pip3 install napalm-huawei-vrp
實(shí)驗(yàn)測(cè)試:
實(shí)驗(yàn)環(huán)境: ENSP,IP地址規(guī)劃如下,通告cloud1,保證運(yùn)行python代碼的設(shè)備能夠ping通交換機(jī)。
實(shí)驗(yàn)?zāi)康模?/strong> 檢查設(shè)備的連通性,如果可以SSH(netmiko)登陸設(shè)備,則將設(shè)備標(biāo)準(zhǔn)配置和當(dāng)前配置進(jìn)行對(duì)比,如果有改變,則記錄更改的信息。
步驟一: SW1-SW5上已經(jīng)配置完了SSH,其中SW2和SW4無法正常通信。
交換機(jī)命令:
#創(chuàng)建秘鑰
[sw2]dsalocal-key-paircreate
##配置SSH認(rèn)證類型(密碼/其他)
[sw2]sshuserprinauthentication-typepassword
[sw2]sshuserprinservice-typestelnet
[sw2]stelnetserverenable
##配置認(rèn)證模式
[sw2]user-interfacevty04
[sw2-ui-vty0-4]authentication-modeaaa//配置認(rèn)證模式
[sw2-ui-vty0-4]protocolinboundssh//允許ssh連接虛擬終端
##配置本地用戶信息
[sw2]aaa
[sw2-aaa]local-userprinpasswordcipherHuawei@123
[sw2-aaa]local-userprinprivilegelevel15
[sw2-aaa]local-userprinservice-typessh
步驟二: 在腳本運(yùn)行的同一目錄下,保存需要檢查的配置文件信息(可以僅保留自己需要檢查的部分配置信息):
步驟三: 修改設(shè)備當(dāng)前運(yùn)行的部分配置文件,做測(cè)試:
- SW1將設(shè)備名稱修改為SW_NEW;
- 將SW3的Loopback0接口的IP地址undo掉;
- SW5配置保持不變。
步驟四: 編寫napalm_huawei.py腳本:
fromnapalmimportget_network_driver
fromdatetimeimportdatetime
importtime
driver=get_network_driver('huawei_vrp')
device_ip=['192.168.0.11','192.168.0.22','192.168.0.33','192.168.0.44','192.168.0.55']
active_devices=[]
whileTrue:
#找到能夠連接的設(shè)備
foripindevice_ip:
try:
SW=driver(ip,'prin','Huawei@123')
SW.open()
#如果沒有異常,則將IP地址添加到active_devices列表中
active_devices.append(ip)
exceptExceptionase:
print(ip+'連接失敗')
#查看配置有無更改,如果有更改,記錄更改設(shè)備的IP地址,更改時(shí)間,更改的內(nèi)容到記事本中
foripinactive_devices:
SW=driver(ip,'prin','Huawei@123')
SW.open()
#加載需要對(duì)比的文件
SW.load_merge_candidate(filename='napalm_config_'+ip+'.cfg')
#對(duì)加載的配置文件和當(dāng)前運(yùn)行配置進(jìn)行比較
differences=SW.compare_config()
iflen(differences)>0:
#打印出給出標(biāo)準(zhǔn)配置對(duì)比當(dāng)前運(yùn)行配置有變動(dòng)的地方
print(ip+':'+differences)
#獲取當(dāng)前時(shí)間的字符串
now=datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
#將檢查配置文件寫入記事本中
withopen('change_config','a')asf:
f.write(now+'
'+ip+':
'+differences+'
')
#如果配置了下面一條代碼,則將設(shè)備的配置信息按照提供的配置文件進(jìn)行還原
#SW.commit_config()
else:
print(ip+':'+'配置沒有修改')
SW.discard_config()
#每隔一小時(shí)運(yùn)行一次腳本
time.sleep(3600)
測(cè)試結(jié)果:
pycharm運(yùn)行結(jié)果:
文本記錄信息:
-
華為
+關(guān)注
關(guān)注
216文章
34476瀏覽量
252114 -
交換機(jī)
+關(guān)注
關(guān)注
21文章
2645瀏覽量
99785 -
模擬器
+關(guān)注
關(guān)注
2文章
878瀏覽量
43268
原文標(biāo)題:通過napalm-huawei-vrp模塊對(duì)華為交換機(jī)信息進(jìn)行分析(ENSP模擬器)
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
交換機(jī)的工作原理是什么?3類交換機(jī)故障詳解
如何配置華為eNSP模擬器設(shè)備路由器的ssh登錄

反射內(nèi)存交換機(jī)與普通交換機(jī)的區(qū)別

華為交換機(jī)常用命令大全
華為交換機(jī)的各種接口模式
使用Python腳本備份華為交換機(jī)的配置信息

網(wǎng)管型交換機(jī)和非網(wǎng)管型交換機(jī)的區(qū)別
交換機(jī)的基本分類
帶光口的交換機(jī)和插光模塊的交換機(jī)有什么區(qū)別?
工業(yè)交換機(jī)如何進(jìn)行網(wǎng)絡(luò)診斷


評(píng)論