-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpwgen
More file actions
30 lines (22 loc) · 651 Bytes
/
pwgen
File metadata and controls
30 lines (22 loc) · 651 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python3
import getopt
import sys
from random import SystemRandom
cryptogen = SystemRandom()
optlist, args = getopt.getopt(sys.argv[1:], 'sy')
use_symbols = False
for o, a in optlist:
if o == '-y':
use_symbols = True
elif o == '-s':
pass
else:
print('Unknown option: {0}'.format(o), file=sys.stderr)
exit(1)
if len(args) < 1:
print('Missing required argument: length', file=sys.stderr)
exit(2)
pool="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
if use_symbols:
pool = pool + "=.+\"'[]()_~-!%+?" * 3
print(''.join([pool[k] for k in [cryptogen.randrange(len(pool)) for i in range(int(args[0]))]]))