摘要:通過(guò)函數(shù)找到所有符合上述要求的文本內(nèi)容,并賦值給,通過(guò)打印,該值是一個(gè),每一個(gè)匹配項(xiàng)作為一個(gè)列表單元。循環(huán)遍歷上述的查找結(jié)果通過(guò)查找出來(lái)的內(nèi)容,使用訪問(wèn),并將剝?nèi)ィ妥兂刹畚恍畔⒘恕Mㄟ^(guò)查找出來(lái)的內(nèi)容,經(jīng)過(guò)處理就變成信息了。
處理思科設(shè)備 show inventory輸出內(nèi)容 任務(wù)目標(biāo)
通過(guò)Python讀取show inventory的內(nèi)容,并將設(shè)備的槽位、模塊型號(hào)和序列號(hào)自動(dòng)寫(xiě)入CVS文件。否則,我需要打開(kāi)每一個(gè)文件,找到設(shè)備每一個(gè)槽位、母卡、子卡和序列號(hào),并一一填寫(xiě)到表格中。操作繁瑣且重復(fù),因此考慮用Python實(shí)現(xiàn)。
show inventory 輸出內(nèi)容示例RP/0/RP0/CPU0:crs-1#admin show inventory Thu Jul XX 16:08:46.990 GMT NAME: "0/1/*", DESCR: "Cisco CRS Series Modular Services Card 400G" PID: CRS-MSC-X, VID: V03, SN: CAT20XXXX0J NAME: "ControlEthernet0/1/CPU0", DESCR: "CPU_PORT_0" PID: , VID: N/A, SN: NAME: "0/PL1/*", DESCR: "Cisco CRS Series 4x100GbE Interface Module" PID: 4X100GE-LO, VID: V01, SN: CATXXXXT00W NAME: "HundredGigE0/1/0/0", DESCR: "100GBASE-LR4" PID: CPAK-100G-LR4 , VID: V04, SN: FBNXXXX0141 NAME: "HundredGigE0/1/0/1", DESCR: "100GBASE-LR4" PID: CPAK-100G-LR4 , VID: V04, SN: FBNXXXX0582 NAME: "HundredGigE0/1/0/2", DESCR: "100GBASE-LR4" PID: CPAK-100G-LR4 , VID: V04, SN: FBNXXXX0546 NAME: "HundredGigE0/1/0/3", DESCR: "100GBASE-LR4" PID: CPAK-100G-LR4 , VID: V04, SN: FBNXXXX0340 NAME: "0/4/*", DESCR: "Cisco CRS-1 Series Modular Services Card revision B" PID: CRS-MSC-B, VID: V07, SN: SADXXXX020C NAME: "ControlEthernet0/4/SP", DESCR: "CPU_PORT_0" PID: , VID: N/A, SN: NAME: "ControlEthernet0/4/CPU0", DESCR: "CPU_PORT_1" PID: , VID: N/A, SN: NAME: "0/PL4/*", DESCR: "Cisco Carrier Routing System SPA Interface Processor Card" PID: CRS1-SIP-800, VID: V04, SN: SALXXXXGX57 NAME: "0/4/0", DESCR: "1-port OC192/STM64 POS/RPR XFP Optics" PID: SPA-OC192POS-XFP, VID: V05, SN: SALXXXXFAN0Python代碼的實(shí)現(xiàn)
# 引入re、csv模塊 import re import csv # 將待處理的文件讀入data_buff。 with open(inventory) as file_obj: data_buff = file_obj.read() # 定義幾個(gè)正則表達(dá)式對(duì)象如下: mixRegex = re.compile(r"^NAME: .* " r"^PID: .*SN: .*" ,re.MULTILINE) mix_match = mixRegex.findall(data_buff) nameRegex = re.compile("^NAME: .*,") modRegex = re.compile("^PID: .*,",re.MULTILINE) snRegex = re.compile("SN: .*",re.MULTILINE) # 以上幾個(gè)正則表達(dá)式的目的如下: # mixRegex,該表達(dá)式匹配以”NAME:”開(kāi)頭,并且,第二行以”P(pán)ID:”開(kāi)頭,包含”SN:”。 # 通過(guò)findall函數(shù)找到所有符合上述要求的文本內(nèi)容,并賦值給mix_match,通過(guò)打印,該值是一個(gè)list,每一個(gè)匹配項(xiàng)作為一個(gè)列表單元。 # nameRegex、modRegex和snRegex分別在以下代碼中進(jìn)行過(guò)濾 # 初始化兩個(gè)列表,其中一個(gè)作為子列表,最終形成一個(gè)二維列表。 slot_map = [] sub_map = [] # for循環(huán)遍歷上述的查找結(jié)果mix_match; # 通過(guò)nameRegex查找出來(lái)的內(nèi)容,使用group()訪問(wèn),并將”NAME: ”剝?nèi)ィ妥兂刹畚恍畔⒘恕W址詈蠖嘁粋€(gè)”””是為了防止Excel表自動(dòng)的把0/4/0改成日期。len(slot) < 10,是去除一些不需要統(tǒng)計(jì)的內(nèi)容,如"ControlEthernet0/4/SP"。 # 通過(guò)modRegex查找出來(lái)的內(nèi)容,經(jīng)過(guò)處理后就變成PID信息了。 # 通過(guò)snRegex查找出來(lái)的內(nèi)容,經(jīng)過(guò)處理就變成SN信息了。 # 然后分別把這些信息存入list sub_map中,再存到slot_map,變?yōu)槎S表。 for each_pair in mix_match: slot = nameRegex.search(each_pair).group()[7:-1] if len(slot) < 10: card = modRegex.search(each_pair).group().split(",")[0][5:].strip() sn = snRegex.search(each_pair).group()[4:] # print(sn) sub_map.append(slot) sub_map.append(card) sub_map.append(sn) slot_map.append(sub_map) # print(sub_map) sub_map = [] # 以下代碼將上述生成的二維列表寫(xiě)入到CSV文件中。 csv_output = inventory + "-slotmap.csv" with open(csv_output,"w") as file_obj: wr = csv.writer(file_obj) for list in slot_map: wr.writerow(list)
前一篇文章寫(xiě)了處理show ip int brief輸出。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40658.html
摘要:復(fù)雜系統(tǒng)仿真的微博客虛假信息擴(kuò)散模型研究面向影子分析的社交媒體競(jìng)爭(zhēng)情報(bào)搜集面向人機(jī)協(xié)同的移動(dòng)互聯(lián)網(wǎng)政務(wù)門(mén)戶(hù)探析經(jīng)驗(yàn)證。微博客的企業(yè)競(jìng)爭(zhēng)情報(bào)搜集移動(dòng)社交媒體用戶(hù)隱私保護(hù)對(duì)策研究注意這里的提示,原先的個(gè)文件沒(méi)有被再次抽取,只有個(gè)新文件被抽取。 showImg(https://segmentfault.com/img/bVbiU7y?w=1000&h=508); 本文為你展示,如何用Pyth...
摘要:是你學(xué)習(xí)從入門(mén)到專(zhuān)家必備的學(xué)習(xí)路線(xiàn)和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線(xiàn)性代數(shù)概率論與數(shù)理統(tǒng)計(jì)三門(mén)課程,這三門(mén)課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門(mén)和進(jìn)階資料非常適合。書(shū)籍介紹深度學(xué)習(xí)通常又被稱(chēng)為花書(shū),深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷(xiāo)書(shū)。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開(kāi)源平...
摘要:主要用來(lái)調(diào)用命令行,因?yàn)槟K無(wú)法解析的文件,所以在解析前將的文件轉(zhuǎn)換成文件。主要用于遍歷文件夾獲取文件。總結(jié)利用還是減少了一定的重復(fù)勞動(dòng),但面對(duì)一些不標(biāo)準(zhǔn)的東東貌似還沒(méi)有很好的方式。 目前我的文件夾中有500多份簡(jiǎn)歷,如果我想知道一些信息,比如學(xué)校,學(xué)歷之類(lèi)的,我需要打開(kāi)每一份word去查看,太耗時(shí)間了。這個(gè)時(shí)候python需要出馬了。 目標(biāo) 目前類(lèi)似截圖中的word有600+,想簡(jiǎn)單...
閱讀 2031·2023-04-25 15:24
閱讀 1575·2019-08-30 12:55
閱讀 1615·2019-08-29 15:27
閱讀 470·2019-08-26 17:04
閱讀 2406·2019-08-26 10:59
閱讀 1797·2019-08-26 10:44
閱讀 2193·2019-08-22 16:15
閱讀 2587·2019-08-22 15:36