Auto Pw Change
November 13, 2009 Leave a comment
I had to change this script a lot, so take with a grain of salt. That said, we changed about 1000 LOCAL passwords in a couple hours – which would have really taken all day and been more boring.
#!/usr/bin/python import pexpect #most likely should be first for speed passlist = ["pass1", "pass2", "pass3"] #most critical should be listed in file first for speed user="root" newpass="newpass" #open hosts file hostfile=open("hosts.txt", "r") for host in hostfile: host = host.strip() changeSuccesful = False #need to find the currpass to change it #so auth by key may not be ideal in this case p = pexpect.spawn("ssh " + user + "@" + host + " passwd" #try block so it doesn't crash the program try: #different systmes vary with exact text conn_result = p.expect(["assword:", pexpect.EOF, "Are you sure you want to continue"]) if conn_result == 2: print "accepting public key for ", host p.sendline("yes") conn_result = p.expect(["assword:", pexpect.EOF]) if conn_result == 0: for password in passlist: print "tryin password for ", host p.sendline(password) pass_result = p.expect(["denied", "current.*assword:", "new.*assword", pexpect.EOF]) if pass_result == 1: p.sendline(password) p.expect("new.*assword:") #this should execute if a key OR password was accepted if pass_result == 1 or pass_result == 2: p.sendline(newpass) p.expect("new.*assword:") p.sendline(newpass) changeSuccesful = True print "Succesful pwchange: host "+ host break if not changeSuccesful: print "UnSuccesful pwchange: host "+ host except: print "Uncaught exception: host "+ host