Auto Pw Change
November 13th, 2009 by webstersprodigyI 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
Tags: python