實驗環(huán)境:

如圖所示,SW1-SW5上分別已經(jīng)配置了SSH,使用外部PC可以SSH到其中。
在本次實驗中,主要使用了如下三個模塊:
openpyxl,對excel文件進行操作。
gevent,使用協(xié)程,同時對五臺設(shè)備進行操作。
napalm-huawei-vrp,SSH到交換機,并提取格式化信息。
python代碼:
fromnapalmimportget_network_driver fromopenpyxlimportWorkbook fromopenpyxl.stylesimportColor,PatternFill,Font,Border,Side importgevent fromgeventimportmonkey frompprintimportpprint monkey.patch_all() #設(shè)置模板為華為的vrp操作系統(tǒng) driver=get_network_driver('huawei_vrp') #定義5臺設(shè)備的IP地址,如果IP過多的話,可以通過數(shù)據(jù)庫或者txt文件保存并讀取 devices_ip=['192.168.0.11','192.168.0.22','192.168.0.33','192.168.0.44','192.168.0.55'] defcollect_basic_info(ip,fill,border): print("start:",ip) try: SW=driver(ip,'prin','Huawei@123') SW.open() print(ip+'連接成功') #獲取設(shè)備基礎(chǔ)信息 basic_info=SW.get_facts() #pprint(basic_info) #提取其中的hostname信息 hostname=basic_info.get('hostname') #獲取設(shè)備接口三層信息 interfaces_ip_info=SW.get_interfaces_ip() #pprint(interfaces_ip_info) #返回設(shè)備名稱和接口IP信息 #在excel文件中,創(chuàng)建以hostname命名的sheet ws=wb.create_sheet(hostname) #設(shè)置此sheet中記錄數(shù)據(jù)的類別 ws['A1']='Interfaces' ws['B1']='IP' ws['C1']='Mask' #設(shè)置背景顏色 ws['A1'].fill=fill ws['B1'].fill=fill ws['C1'].fill=fill #創(chuàng)建要寫入數(shù)據(jù)的列表 interfaces_list=[] ip_addr_list=[] mask_list=[] #根據(jù)pprint(interfaces_ip_info)的打印信息,進行處理,提取接口名稱、IP地址、MASK保存到當(dāng)前sheet中 forkey,valuesininterfaces_ip_info.items(): interfaces_list.append(key) forip,maskinvalues['ipv4'].items(): ip_addr_list.append(ip) mask_list.append(mask.get('prefix_length')) #得到插入數(shù)據(jù)的行數(shù),n+2的原因是因為range是左開右閉,并且excel的第一行也已經(jīng)寫入了數(shù)據(jù)類型(A1、B1、C1) row_numbers=[n+2forninrange(len(interfaces_list))] #對excel當(dāng)前sheet中指定的cell進行賦值 forinterface,rowinzip(interfaces_list,row_numbers): ws.cell(row=row,column=1,value=interface) forip_addr,rowinzip(ip_addr_list,row_numbers): ws.cell(row=row,column=2,value=ip_addr) formask,rowinzip(mask_list,row_numbers): ws.cell(row=row,column=3,value=mask) #調(diào)整列的寬度(自適應(yīng)數(shù)據(jù)長度),保證excel文件的美觀性,首先創(chuàng)建一個名為dims的空字典 dims={} #ws1.rows返回值的類型為生成器generator,其中包含每一排和每一列有交集的所有單元格 #(每一排中至少有一個單元格為非空),比如(A1,B1),(A2,B2),(A3,B3) forrowinws.rows: #遍歷每一排元組里的每一個元素(即單元格A1,B1,A2,B2,A3,B3) forcellinrow: #為每一個單元添加邊框 cell.border=border #如果單元格內(nèi)容為非空,則用max()比較每一列下最長的字符,比如從A1和A2,A3相比較,B1和B2,B3相比較 ifcell.value: #cell.column_letter返回的值是單元格所在的列的名稱,其數(shù)據(jù)類型為字符串,比如A1,A2,A3返回'A',B1,B2,B3則返回'B'。 #第一次故意用dims.get(cell.column,0)返回一個0,因為此時dims字典下還沒有cell.column這個鍵名, #字典的的get()函數(shù)在鍵名缺失的情況下會返回第二個我們給定的參數(shù),即這里的0。 dims[cell.column_letter]=max((dims.get(cell.column_letter,0),len(str(cell.value)))) #遍歷字典里的鍵值對,以每一排寬度最長的單元格作為自動調(diào)整單元格長度的標(biāo)準(zhǔn), #長度+1以確保列的寬度超過最長單元格的寬度 forcol,valueindims.items(): ws.column_dimensions[col].width=value+1 exceptExceptionase: print(e) print("end:",ip) if__name__=='__main__': #調(diào)用Openpyxl創(chuàng)建Workbook對象,用來創(chuàng)建一個workbook,并將它賦值給變量wb wb=Workbook() #定義表格中的背景顏色和樣式 yellowFill=PatternFill(start_color='FFFF00',end_color='FFFF00',fill_type='solid') thin_border=Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'), bottom=Side(style='thin')) #同時執(zhí)行5個任務(wù) tasks=[gevent.spawn(collect_basic_info,ip,yellowFill,thin_border)foripindevices_ip] all_result=gevent.joinall(tasks) #刪除掉默認的Sheet ws=wb["Sheet"] wb.remove(ws) #查看存在哪些表 print(wb.sheetnames) #保存excel信息 wb.save('huawei_interface_ip_info.xlsx')
pycharm運行結(jié)果:

查看Excel上的最終結(jié)果:

審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
SSH
+關(guān)注
關(guān)注
0文章
200瀏覽量
17732 -
python
+關(guān)注
關(guān)注
57文章
4877瀏覽量
90071 -
華為交換機
+關(guān)注
關(guān)注
0文章
13瀏覽量
6519
原文標(biāo)題:使用python提取華為交換機的接口IP信息保存到excel中(ensp模擬器)
文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
POE交換機接口詳解
在現(xiàn)代網(wǎng)絡(luò)設(shè)備中,PoE(以太網(wǎng)供電)技術(shù)已成為不可或缺的一部分。PoE交換機接口不僅能傳輸數(shù)據(jù),還能通過同一條網(wǎng)線為終端設(shè)備供電,有效簡化布線,降低成本,并提升網(wǎng)絡(luò)部署效率。本文將全面解析PoE
發(fā)表于 03-27 17:17
基礎(chǔ)知識:理解網(wǎng)絡(luò)交換機的原理
域內(nèi),也就是說,交換機不隔絕廣播(惟一的例外是在配有VLAN的環(huán)境中)。 3.交換機依據(jù)幀頭的信息進行轉(zhuǎn)發(fā),因此說交換機是工作在數(shù)據(jù)鏈路
發(fā)表于 04-13 14:30
交換機接口類型,交換機各種類型接口圖片及介紹
交換機接口及連接圖解交換機在我們的印象中是作為局域網(wǎng)節(jié)點連接的網(wǎng)絡(luò)設(shè)備,其實它也在廣域網(wǎng)中存在,并且得到大量應(yīng)用,特別是電信運營企業(yè)
發(fā)表于 05-03 23:05
華為路由器交換機VLAN配置實例
華為路由器交換機VLAN配置實例[hide]華為路由器交換機VLAN配置實例使用4臺PC(pc多和少,原理是一樣的,所以這里我只用了4臺pc),華為
發(fā)表于 05-25 00:21
交換機VLAN是如何實現(xiàn)的
交換機自動配置Port為主機所屬的VLAN。這里有三種分類:基于MAC,基于IP,基于用戶 3、基于MAC的VLAN(例如二層交換機) 將所有主機的硬件地址都加入到VALN的管理數(shù)據(jù)庫
發(fā)表于 01-12 16:16
什么是交換機間系統(tǒng)接口(ISSI)
什么是交換機間系統(tǒng)接口(ISSI)
交換機間系統(tǒng)接口(ISSI: Inter-Switching System Interface)
交換機
發(fā)表于 11-27 08:47
?1667次閱讀
如何提取Word文檔表格保存到Excel
據(jù)提取到Excel表中。例如,提取word文檔中的財務(wù)數(shù)據(jù)、考勤數(shù)據(jù)等,將數(shù)據(jù)存儲到
Excel
交換機怎么配置IP地址
在構(gòu)建和管理網(wǎng)絡(luò)架構(gòu)中,交換機作為核心設(shè)備之一,其IP地址的配置是確保網(wǎng)絡(luò)正常運行的重要步驟。正確配置交換機的IP地址,可以使得網(wǎng)絡(luò)設(shè)備
使用Python腳本備份華為交換機的配置信息
在現(xiàn)代網(wǎng)絡(luò)管理中,備份交換機的配置信息是一項至關(guān)重要的任務(wù)。備份可以確保在交換機發(fā)生故障或配置錯誤時,能夠迅速恢復(fù)到之前的工作狀態(tài)。本文將詳細介紹如何使用
華為交換機的各種接口模式
華為交換機接口模式種類繁多,功能強大,能夠滿足不同網(wǎng)絡(luò)環(huán)境下的需求。本文將詳細介紹華為交換機的各種接口
怎么使用python提取華為交換機的接口IP信息保存到excel中呢?
評論