首先说下脚本背景,公司最近有个项目涉及全省的一个网络改造,项目开始之前要将网络设备的登陆方式全部添加到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.结尾
坚持学习,坚持积累,坚持写文章。时代发展真的很快,大家需要不断学习才能保持不落后。对于我这个刚毕业的人来说,更是如此,每天要有计划,每天都要充实起来。
网友评论