]> code.delx.au - monosys/commitdiff
passwdgen: added command line options
authorJames Bunton <jamesbunton@delx.net.au>
Thu, 2 Jan 2014 13:18:32 +0000 (00:18 +1100)
committerJames Bunton <jamesbunton@delx.net.au>
Thu, 2 Jan 2014 13:18:32 +0000 (00:18 +1100)
bin/passwdgen

index b72865f01d929247c2d5c88c2d1c25c142dd445b..f375f278a711ad627bf412aa9722ba17b7425156 100755 (executable)
@@ -2,22 +2,32 @@
 
 import random, string, sys
 
-chars = filter(lambda c: c.isalnum(), map(chr, range(256)))
-chars = chars * 2
-chars += "!@#%^&*(){}[]/=?+_-;:,.<>"
+alnum_chars = filter(lambda c: c.isalnum(), map(chr, range(256)))
+full_chars = alnum_chars * 2 + list("!@#%^&*(){}[]/=?+_-;:,.<>")
 
-def generate(length):
+def generate(chars, length):
        return "".join([random.choice(chars) for i in xrange(length)])
 
+def print_usage():
+       print "Usage: %s [length] [alnum|full]" % sys.argv[0]
+       sys.exit(1)
+
 if __name__ == "__main__":
-       try:
+       if len(sys.argv) <= 1:
+               n = 20
+       elif sys.argv[1].isdigit():
                n = int(sys.argv[1])
-       except:
-               print "Usage: %s length" % sys.argv[0]
-               sys.exit(1)
-
-       print generate(n)
-
-
-
+       else:
+               print_usage()
+
+       if len(sys.argv) <= 2:
+               chars = alnum_chars
+       elif sys.argv[2] == "alnum":
+               chars = alnum_chars
+       elif sys.argv[2] == "full":
+               chars = full_chars
+       else:
+               print_usage()
+
+       print generate(chars, n)