使用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:本人非專業的程序員,如寫得不好請多擔待,謝謝!


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM