有時候網絡運維時需要記錄下交接機信息,如資產管理、交換機版本升級等。
以下腳本都是本人現網當中使用的腳本,親測可以使用。
這個腳本需要預先具有交換機的備份配置,交換機的批量備份腳本稍后放出。
代碼如下:
# -*- coding: gbk -*- # 制作人:Tim import os import re import openpyxl from openpyxl import Workbook path = "D:\\SWbackup\\8月\\" def sw(pathx): f = open(pathx,'r') for line in f.readlines(): if "Cisco IOS Software" in line: # 獲取設備的version version = re.search('Version.*,',line).group() info.append(version.strip(",")) # 把version信息添加到列表 elif 'System serial number' in line or 'hostname' in line: # 獲取設備的SN sn = line.strip("\n").split(" ") info.append(sn[-1]) # 把SN信息添加到列表 elif "Model number" in line: # 獲取設備的型號 model = line.strip("\n").split(":") # 把型號信息添加到列表 info.append(model[-1]) f.close() def cisco(): info = [] book = Workbook() sheet = book.active # 生成一個excel文件 for i in os.listdir(path): # 遍歷D:\\SWbackup\\8月\\下的所有文件 pathx = path + i # pathx格式為D:\\SWbackup\\8月\\ipxxxxx.txt ip = i.split() # 獲取設備的IP,因為每個文件名是以設備的IP來命名的 fn = open(pathx,'rb').read().decode('utf-8') # 打開文件 model = re.findall('Model number.*',fn) # 在文件中找到Model number這行,目的是為了獲取設備的型號,根據不同的型號來做不同的操作 if model != []: if 'WS-C29' in model[0]: sw(pathx) elif 'WS-C3' in model[0]: sw(pathx) if info != []: if info[0] == info[1]: # 把重名的去掉 info.pop(0) sheet.append(info) book.save("D:\\SWbackup\\test.xlsx") else: sheet.append(info) book.save("D:\\SWbackup\\test.xlsx") info = [] def H3C(): info = [] book = openpyxl.load_workbook("D:\\SWbackup\\test.xlsx") #讀取已經生成的excel文件 sheet = book.active for i in os.listdir(path): pathx = path + i fn1 = open(pathx,'r').read() model = re.findall('DEVICE_NAME.*',fn1) if model != []: f = open(pathx,'r') for line in f.readlines(): if "sysname" in line: sysname = line.strip("\n").split(" ") info.append(sysname[-1]) elif 'H3C Comware Software,' in line: version = re.search('Version .*',line).group() info.append(version) elif 'DEVICE_SERIAL_NUMBER' in line: sn = line.strip("\n").split(":") info.append(sn[-1]) elif 'BOARD TYPE' in line: model = line.strip("\n").split(" ") info.append(model[-1]) s = info.pop(2) info.insert(0,s) sheet.append(info) book.save("D:\\SWbackup\\test.xlsx") f.close() info = [] def main(): cisco() H3C() if __name__=='__main__': main()
效果如下:

自動生成excel表

PS:本人非專業的程序員,如寫得不好請多擔待,謝謝!
