首页 > 代码库 > python批量修改服务器密码,同时保存execl表格
python批量修改服务器密码,同时保存execl表格
#!/usr/bin/env python
#coding:utf8
#随机生成自定义长度密码
from random import choice
import string,pickle
def GenPassword(length=8,chars=string.ascii_letters+string.digits):
return ‘‘.join([choice(chars) for i in range(length)])
def passlist(r_user,c_user,ip_list,web_list):
dic={}
for i in ip_list:
if i.split()[1] in web_list:
dic[i.split()[1]]=[i.split()[0],{r_user:GenPassword(32),c_user:GenPassword(32)}]
else:
dic[i.split()[1]]=[i.split()[0],{r_user:GenPassword(32)}]
return dic
def ip_list(ip_file):
with open(ip_file) as file:
ip_file=file.read().strip().split("\n")
#web_list=[i for i in ip_file if i in web_list]
return ip_file
def save_dic():
dic=main()
with open("../host_message.pickle","w") as fd:
pickle.dump(dic,fd)
def main():
file="/root/cui/script/python/ip.txt"
web_list=[ip1,ip2,ip3,ip4]
file_list=ip_list(file)
file_dic_pass=passlist("root","www",file_list,web_list)
return file_dic_pass
if __name__=="__main__":
save_dic()
#!/usr/bin/env python
#coding:utf8
#密码信息文件保存为execl
import xlwt,pickle
#from datetime import datetime;
def read_dic():
with open("host_message.pickle","rb") as f:
return pickle.load(f)
def set_execl():
ip_host_dic=read_dic()
style0 = xlwt.easyxf(‘font: name Times New Roman, color-index red, bold on‘);
wb = xlwt.Workbook();
ws = wb.add_sheet(‘hosts‘);
ws.write(0, 0, "hostname", style0);
ws.write(0, 1, "ipaddrs", style0);
ws.write(0, 2, "root_passwd", style0);
ws.write(0, 3, "www_passwd", style0);
iplist=ip_host_dic.keys()
for i in xrange(len(iplist)):
if "www" in ip_host_dic[iplist[i]][1].keys():
ws.write(i+1, 0,ip_host_dic[iplist[i]][0]);
ws.write(i+1, 1,iplist[i]);
ws.write(i+1, 2,ip_host_dic[iplist[i]][1]["root"]);
ws.write(i+1, 3,ip_host_dic[iplist[i]][1]["www"]);
else:
ws.write(i+1, 0,ip_host_dic[iplist[i]][0]);
ws.write(i+1, 1,iplist[i]);
ws.write(i+1, 2,ip_host_dic[iplist[i]][1]["root"]);
wb.save(‘example.xls‘);
if __name__ == "__main__":
set_execl()
#!/usr/bin/env python
#coding:utf8
#批量修改密码主程序
import pickle
from ssh_co.ssh_connect import sshd
from command.ip_passwd import save_dic,main
from execl import set_execl
def read_dic():
with open("host_message.pickle","rb") as f:
return pickle.load(f)
def ssh_main():
pid_host=1
host_message=read_dic()
host_list=host_message.keys()
print host_list
for host_msg in xrange(len(host_list)):
host_attribute=(host_list[host_msg],port,user,passwd)
ssh_conn=sshd(host_attribute,pid_host)
if "www" in host_message[host_list[host_msg]][1].keys():
for username in xrange(len(host_message[host_list[host_msg]][1].keys())):
try:
user=host_message[host_list[host_msg]][1].keys()[username]
passwd=host_message[host_list[host_msg]][1][host_message[host_list[host_msg]][1].keys()[username]]
results=ssh_conn.set_ssh_cmd(u"/bin/echo %s|/usr/bin/passwd --stdin %s" %(passwd,user))
print results,host_list[host_msg],user+"-----------"+passwd
except:
print results,host_list[host_msg],user+"-----except------"+passwd
else:
user=host_message[host_list[host_msg]][1].keys()[0]
passwd=host_message[host_list[host_msg]][1][host_message[host_list[host_msg]][1].keys()[0]]
result=ssh_conn.set_ssh_cmd(u"/bin/echo %s|/usr/bin/passwd --stdin %s" %(passwd,user))
print result,host_list[host_msg],user+"-----------"+passwd
if __name__ == "__main__":
dic=main()
with open("host_message.pickle","w") as fd:
pickle.dump(dic,fd)
set_execl()
ssh_main()