#!/usr/bin/python3 # ----------------------------------------------------------------------------- # Wachtwoord genereren. # *** Leerobject voor Python. *** # *** Gebruik Bitwarden voor wachtwoorden! *** # # Geschreven door Karel Zimmer . # Auteursrecht (c) 2020-2021 Karel Zimmer. # GNU Algemene Publieke Licentie . # # RelNum=02.00.08 # RelDat=2021-01-15 # ----------------------------------------------------------------------------- import os import random import argparse progname = os.path.basename(__file__) # Setup the command-line parsing module argparse. parser = argparse.ArgumentParser(description='Wachtwoord genereren.', epilog="Typ 'man " + progname + "' voor meer " 'informatie.') parser.add_argument('-g', '--gui', action='store_true', help='start in grafische modus') parser.add_argument('-u', '--usage', action='store_true', help='een korte gebruikssamenvatting tonen') parser.add_argument('-v', '--version', action='store_true', help='de versie tonen') args = parser.parse_args() # Proccess input. if args.usage: print(f"""Gebruik: {progname} [-g|--gui] [-h|--help] [-u|--usage] \ [-v|--version] Typ '{progname} --help' voor meer informatie.""") elif args.version: file = os.path.realpath(__file__) release_number = release_date = copyright_years = None # Find release_number, release_date, and copyright_years in this script. with open(file) as f: datafile = f.readlines() for line in datafile: if 'Auteursrecht (c) ' in line and copyright_years is None: data = line.split() copyright_years = data[3] if '# RelNum=' in line and release_number is None: data = line.split('=') # e.g. data = ['# RelNum', '01.00.00\n'], remove \n. release_number = data[1].rstrip('\n') if '# RelDat=' in line and release_date is None: data = line.split('=') # e.g. data = ['# RelDat', '1970-01-01\n'], remove \n. release_date = data[1].rstrip('\n') if (release_number is not None and release_date is not None and copyright_years is not None): break print(f"""{progname} {release_number} ({release_date}) Geschreven door Karel Zimmer . Auteursrecht (c) {copyright_years} Karel Zimmer. GNU Algemene Publieke Licentie .""") else: lower = 'abcdefghijklmnopqrstuvwxyz' upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' numbers = '0123456789' symbols = '[]{}()*;/,_-' all = lower + upper + numbers + symbols length = 16 password = ''.join(random.sample(all, length)) print(password) # Een non-gui script gestart met optie gui. if args.gui: input('Druk op de Enter-toets om verder te gaan [Enter]: ') # EOF