使用python批量获取交换机的序列号、版本等信息生成excel表

有时候网络运维时需要记录下交接机信息,如资产管理、交换机版本升级等。

以下脚本都是本人现网当中使用的脚本,亲测可以使用。

这个脚本需要预先具有交换机的备份配置,交换机的批量备份脚本稍后放出。

 

代码如下:

# -*- 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:本人非专业的程序员,如写得不好请多担待,谢谢!


 

posted @ 2021-01-20 10:58  tim54252  阅读(2147)  评论(0编辑  收藏  举报