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