40 lines
914 B
Python
Executable File
40 lines
914 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import bcrypt
|
|
import getpass
|
|
|
|
bcrypt_rounds=12
|
|
|
|
def prompt_for_pass():
|
|
password = getpass.getpass("Password: ")
|
|
|
|
if not password:
|
|
raise Exception("Password cannot be blank.")
|
|
|
|
confirm_password = getpass.getpass("Confirm password: ")
|
|
|
|
if password != confirm_password:
|
|
raise Exception("Passwords do not match.")
|
|
|
|
return password
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(
|
|
description="Calculate the hash of a new password, so that passwords"
|
|
" can be reset")
|
|
parser.add_argument(
|
|
"-p", "--password",
|
|
default=None,
|
|
help="New password for user. Will prompt if omitted.",
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
password = args.password
|
|
|
|
if not password:
|
|
password = prompt_for_pass()
|
|
|
|
print bcrypt.hashpw(password, bcrypt.gensalt(bcrypt_rounds))
|
|
|