美文网首页
利用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