Python - refector: passwd src

import sys, getpass, crypt, spwd

def login():
    current_pw = getpass.getpass("Pls input current password:")
    crypted_pw = spwd.getspnam(username)[1]
    check_curr_pw = (crypt.crypt(current_pw, crypted_pw)==crypted_pw)
    if check_curr_pw:
        return (True, crypted_pw)
    else:
        print "The current password is wrong, pls try again."
        sys.exit()

def update_pw():
    times = 0
    while times < 3:
        new_pw_1 = getpass.getpass("Pls input new passwrod:")
        new_pw_2 = getpass.getpass("Retype new password:")
        times += 1
        if new_pw_1 == new_pw_2:
            new_pw = new_pw_1
            break
    else:
            print "Have exhausted maximum number of retries for service"
            sys.exit()
    new_crypted_pw = crypt.crypt(new_pw, "tmp_random")
    src_file = open('/tmp/shadow', 'r+w')
    src_list = src_file.readlines()
    for line in src_list:
        src_file.write(line.replace(old_crypted_pw,new_crypted_pw))
    src_file.close()

if len(sys.argv)<2:
    print "Usage: Python %s username" %(sys.argv[0])
else:
    username = sys.argv[1]
    (logged, old_crypted_pw) = login()
    if logged:
        update_pw()


你可能感兴趣的:(list,python,service,Random,input,login)