python实现linux服务器批量修改密码并生成execl

批量修改linux服务器密码,同时生成execl表格

代码如下:

#!/usr/bin/env python#coding:utf8#随机生成自定义长度密码from random import choiceimport 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 dicdef 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_filedef 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#批量修改密码主程序import picklefrom ssh_co.ssh_connect import sshdfrom command.ip_passwd import save_dic,mainfrom execl import set_execldef 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+”———–“+passwdif __name__ == “__main__”: dic=main() with open(“host_message.pickle”,”w”) as fd: pickle.dump(dic,fd) set_execl() ssh_main()