Skip to content

Instantly share code, notes, and snippets.

@Abductcows
Last active March 10, 2024 22:10
Show Gist options
  • Save Abductcows/8744b330630d00fa3a09c63f5210db8b to your computer and use it in GitHub Desktop.
Save Abductcows/8744b330630d00fa3a09c63f5210db8b to your computer and use it in GitHub Desktop.
#!/usr/bin/python3
import random
from argparse import ArgumentParser
defaults = {
'base characters': r'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()',
'length': 25,
'excluded': '',
'specials': '',
}
parser = ArgumentParser(description=f'Generate a random password.\n Base characters: {defaults["base characters"]}')
parser.add_argument('-s', '--specials', type=str, nargs='?', default=defaults['specials'], const='',
help=f'include special characters. \nDefault: {defaults["specials"]}')
parser.add_argument('-e', '--excluded', type=str, nargs='?', default=defaults['excluded'], const='',
help=f'exclude any of the base characters. \nExcluded by default: ')
parser.add_argument('-l', '--length', type=int, default=defaults['length'],
help=f'set password length ({defaults["length"]})')
def generate(arguments):
symbol_set = [character for character in defaults['base characters'] if character not in arguments['excluded']]
symbol_set.extend(arguments['specials'])
password = ''.join([random.choice(symbol_set) for _ in range(arguments['length'])])
return password
if __name__ == '__main__':
args = vars(parser.parse_args())
print(generate(args))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment