有时候网络运维时需要记录下交接机信息,如资产管理、交换机版本升级等。
以下脚本都是本人现网当中使用的脚本,亲测可以使用。
这个脚本需要预先具有交换机的备份配置,交换机的批量备份脚本稍后放出。
代码如下:
# -*- 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:本人非专业的程序员,如写得不好请多担待,谢谢!