diff --git a/mkapachepw.py b/mkapachepw.py index ab02738..d66d98a 100755 --- a/mkapachepw.py +++ b/mkapachepw.py @@ -9,7 +9,7 @@ # Program Information PROGNAME = "mkapachepw" -RCSID = "$Id: mkapachepw.py,v 1.110 2005/04/05 20:43:44 root Exp $" +RCSID = "$Id: mkapachepw.py,v 1.111 2005/04/05 21:44:36 root Exp $" VERSION = RCSID.split()[2] # Copyright Information @@ -96,12 +96,14 @@ ##### uTable = [PROGNAME + " " + VERSION + " - %s\n" % COPYRIGHT, - "usage: " + PROGNAME + " [-GUfghuv] where,\n", - " -G list of groups to include (+group) or exclude (-group) (default: none)", - " -U list of users to include (+user) or exclude (-user) (default: none)", + "usage: " + PROGNAME + " [-GUguIihv] where,\n", + " -G list of groups to include (+group | +GID) or exclude (-group | -GID) (default: none)", + " -U list of users to include (+user | + UID) or exclude (-user | -UID) (default: none)", " -g # smallest GID to include in output (default: 100)", - " -h print this help information", " -u # smallest UID to include in output (default: 100)", + " -I file include file containing other group information (default: none)", + " -i file include file containing other user information (default: none)", + " -h print this help information", " -v print detailed version information", ] @@ -211,6 +213,36 @@ # End of 'ProcessEnumeratedList(()' +##### +# Read A File Into A Local List, Stripping Newlines, And +# Suppressing Blank Lines +##### + +def ReadFile(filename): + + temp = [] + try: + f = open(filename) + for l in f.readlines(): + if l[-1] == '\n': # Get rid of trailing newlines + l = l[:-1] + l = l.split('#')[0].strip() # Get rid of comments + + if l: # Add any non-blank lines + name, members = l.split(':') + members = members.split() + temp.append([name, members]) + f.close() + + except: + ErrorMsg("Cannot Open File '%s'." % filename) + sys.exit(1) + + return temp + +# End of 'ReadFile()' + + #----------------------------------------------------------# # Program Entry Point # #----------------------------------------------------------# @@ -260,7 +292,7 @@ OPTIONS = envopt.split() + OPTIONS try: - opts, args = getopt.getopt(OPTIONS, '-G:U:g:hu:v') + opts, args = getopt.getopt(OPTIONS, '-G:U:g:u:I:i:hv') except getopt.GetoptError: Usage() sys.exit(1) @@ -276,15 +308,23 @@ except: ErrorMsg("Invalid Starting GID, '%s' - Must Be An Integer Value." % val) sys.exit(1) - if opt == "-h": - Usage() - sys.exit(0) if opt == "-u": try: STARTUID=int(val) except: ErrorMsg("Invalid Starting UID '%s' - Must Be An Integer Value." % val) sys.exit(1) + if opt == "-I": + temp = ReadFile(val) + for entry in temp: + groups[entry[0]] = [65535, entry[1], False] + if opt == "-i": + temp = ReadFile(val) + for entry in temp: + users[entry[0]] = [65535, entry[1][0], False] + if opt == "-h": + Usage() + sys.exit(0) if opt == "-v": print RCSID sys.exit(0)