美文网首页
利用python批量修改CRT配置文件

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

作者: Bless_H | 来源:发表于2018-12-13 21:10 被阅读0次

      首先说下脚本背景,公司最近有个项目涉及全省的一个网络改造,项目开始之前要将网络设备的登陆方式全部添加到CRT中,两个部门,200多个县,平均一个县5个设备,也就是2x200x5=2000个,也不是很多哈,要是一个人弄,没个三五天功夫是下不来的。我们三个人弄了两天吧,基本完成,我的脚本只做了最后一个地市的。

    1.模板

      这个脚本运行要有一个模板,就是有规律的一个excel表格,如果现有表格不是很规律可以进行简单整理。


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

    以地市为sheet名,第一列是区县名称,第二列为设备名称,第三列为管理地址。

    2.程序

      下面附上程序,基本应有的备注,程序里面都有,如果有朋友看到哪儿不明白的咱们可以讨论。

    #coding:utf-8
    
    #总体思路
    #1.通过xlrd模块读取表格
    #2.以sheet名建立文件夹并且进入次文件夹,
    #  再以第一列的区县名称建立文件夹,进入
    #  次文件夹中,写入配置文件,然后进行下一个县
    
    import xlrd
    import shutil
    import os
    import time
    
    
    #为程序进行过程中目录的更改
    def ChangeDir(path):
        #尝试去创建文件夹,如果文件夹已经存在则进入到该文件夹中
        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')
    
        #统计sheets数量
        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)
    
            #下面这个循环的思路就是,表格中县级单位有2-5设备,
            #所以判断当前单元格为空,下一个单元格不为空,
            #此时表示当前县级单位所有设备的配置文件均已生成
            for j in range(1,len(sheet.col_values(0))):
                #print 'conty:'+conty_name
                #print os.getcwd()
    
                #获取县级单位名称
                conty_name = sheet.cell(j,0).value
                #获取设备名称
                eq_name = sheet.cell(j,1).value
                #以设备名称为文件名建立配置文件
                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结束,当操作下一个单元格提示out of range时结束当前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()
    
    

    程序运行的结果:


    running.png last.png

      其实这个脚本还可以扩展,表格中添加两列分别为账号密码,可以在项目进行前期将所有的设备的配置进行采集,这也是项目进行前期必须要进行的,目前项目中是人工采集,苦逼的很啊。

    3.结尾

      坚持学习,坚持积累,坚持写文章。时代发展真的很快,大家需要不断学习才能保持不落后。对于我这个刚毕业的人来说,更是如此,每天要有计划,每天都要充实起来。

    相关文章

      网友评论

          本文标题:利用python批量修改CRT配置文件

          本文链接:https://www.haomeiwen.com/subject/fnfihqtx.html