首页 > 代码库 > 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()