利用python批量修改CRT配置文件

??首先說下腳本背景,公司最近有個項目涉及全省的一個網(wǎng)絡(luò)改造,項目開始之前要將網(wǎng)絡(luò)設(shè)備的登陸方式全部添加到CRT中,兩個部門,200多個縣,平均一個縣5個設(shè)備,也就是2x200x5=2000個,也不是很多哈,要是一個人弄,沒個三五天功夫是下不來的。我們?nèi)齻€人弄了兩天吧,基本完成,我的腳本只做了最后一個地市的。

1.模板

??這個腳本運行要有一個模板,就是有規(guī)律的一個excel表格,如果現(xiàn)有表格不是很規(guī)律可以進(jìn)行簡單整理。


Snipaste_2018-12-13_20-33-38.png

以地市為sheet名,第一列是區(qū)縣名稱,第二列為設(shè)備名稱,第三列為管理地址。

2.程序

??下面附上程序,基本應(yīng)有的備注,程序里面都有,如果有朋友看到哪兒不明白的咱們可以討論。

#coding:utf-8

#總體思路
#1.通過xlrd模塊讀取表格
#2.以sheet名建立文件夾并且進(jìn)入次文件夾,
#  再以第一列的區(qū)縣名稱建立文件夾,進(jìn)入
#  次文件夾中,寫入配置文件,然后進(jìn)行下一個縣

import xlrd
import shutil
import os
import time


#為程序進(jìn)行過程中目錄的更改
def ChangeDir(path):
    #嘗試去創(chuàng)建文件夾,如果文件夾已經(jīng)存在則進(jìn)入到該文件夾中
    try:
        os.mkdir(path)
        os.chdir(path)
    except Exception as e:
        if '183' in str(e):
            os.chdir(path)
            #print 'test'
        else:
            raise e

def make():

    #打開模板配置文件,讀取到列表中
    ori_file = open('demo.ini')
    ori_file_list = ori_file.readlines()

    #模板表格
    workbook = xlrd.open_workbook(r'data.xlsx')

    #統(tǒng)計sheets數(shù)量
    sheet_count = len(workbook.sheets())
    for i in range(0,sheet_count):
        #遍歷表中sheet,sheet為地市的名稱,以sheet名建立文件夾
        sheet = workbook.sheet_by_index(i)
        conty_name= sheet.cell(1,0).value

        #將工作目錄切入到縣級
        ChangeDir(sheet.name)
        ChangeDir(conty_name)

        #下面這個循環(huán)的思路就是,表格中縣級單位有2-5設(shè)備,
        #所以判斷當(dāng)前單元格為空,下一個單元格不為空,
        #此時表示當(dāng)前縣級單位所有設(shè)備的配置文件均已生成
        for j in range(1,len(sheet.col_values(0))):
            #print 'conty:'+conty_name
            #print os.getcwd()

            #獲取縣級單位名稱
            conty_name = sheet.cell(j,0).value
            #獲取設(shè)備名稱
            eq_name = sheet.cell(j,1).value
            #以設(shè)備名稱為文件名建立配置文件
            new_file_name = eq_name+'.ini'
            new_file = open(new_file_name,'w')

            #修改配置文件中的Hostname后面的ip地址,此處的[34]為本配置文件中的行號,不通用
            ori_file_list[34]='S:"Hostname"='+sheet.cell(j,2).value+'\n'
            new_file.writelines(ori_file_list)
            print '[+] ' + new_file_name

            #此處的try是為判斷一個sheet結(jié)束,當(dāng)操作下一個單元格提示out of range時結(jié)束當(dāng)前sheet的操作
            try:
                if(conty_name=='' and sheet.cell(j+1,0).value!=''):
                    os.chdir('..')
                    ChangeDir(sheet.cell(j+1,0).value)
            except Exception as e:
                if 'list index out of range' in str(e):
                    break
                else:
                    raise e
        #將目錄切換至程序開始時的目錄
        os.chdir('../..')

if __name__ == '__main__':
    make()

程序運行的結(jié)果:


running.png
last.png

??其實這個腳本還可以擴(kuò)展,表格中添加兩列分別為賬號密碼,可以在項目進(jìn)行前期將所有的設(shè)備的配置進(jìn)行采集,這也是項目進(jìn)行前期必須要進(jìn)行的,目前項目中是人工采集,苦逼的很啊。

3.結(jié)尾

??堅持學(xué)習(xí),堅持積累,堅持寫文章。時代發(fā)展真的很快,大家需要不斷學(xué)習(xí)才能保持不落后。對于我這個剛畢業(yè)的人來說,更是如此,每天要有計劃,每天都要充實起來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 自序 1. 不是每個人都能以產(chǎn)品經(jīng)理為業(yè),但在我看來,產(chǎn)品經(jīng)理是一類人,他的做事思路與方法可以解決很多實際的生活問...
    沉淪2014閱讀 4,632評論 1 19
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,438評論 6 13
  • 初秋的雨淅淅瀝瀝,天地都似乎冷清了下來。 雨天的傍晚轉(zhuǎn)瞬即逝,夜早早地來了,給萬家燈火披上了一層愁。 廣場舞的伴樂...
    Emily宋閱讀 166評論 0 3
  • 1.使用Homebrew軟件包管理工具安裝 brew 又叫Homebrew,是Mac OSX上的軟件包管理工具,能...
    繁著閱讀 789評論 0 3
  • 紫千紅霓彩裳, 華貴優(yōu)雅氣質(zhì)芳。 秋色欲比紅裝女, 哪知葉落遍野茫。
    行者順達(dá)閱讀 234評論 0 0

友情鏈接更多精彩內(nèi)容