Skip to content

Instantly share code, notes, and snippets.

@aweary
Created July 19, 2015 15:39
Show Gist options
  • Save aweary/15e2a335919475755f8d to your computer and use it in GitHub Desktop.
Save aweary/15e2a335919475755f8d to your computer and use it in GitHub Desktop.
python.gist
#!/usr/bin/python
# List the account and human names from the passwd file in sorted order.
# If there is no human name, or it equals the userid, then the name is
# printed as [ none ]. The program reads from the file given the command
# line, if any, else it reads from /etc/passwd. If the file open fails, the
# program will die on an exception.
# The from form of of import adds name to the symbol table of the
# importing program, so that the names may be refered to without
# the qualified module name.
from sys import argv
from string import *
# Dictionary of entries.
iddict = { }
# Get the file name. Note that argv[0] contains the name of the script,
# so we're getting argv[1], if there is one.
infile = '/etc/passwd'
if len(argv) > 1:
infile = argv[1]
# Attempt to open the file. Will just let the program die on the exception
# if the open fails.
fin = open(infile, 'r')
# Loop through each input line.
for line in fin.readlines():
# Lines starting with # are comments. Clean leading spaces, and
# skip comments.
line = lstrip(line)
if line == '' or line[0] == '#':
continue
# Split the line by the : delimeter, extract the appropriate fields,
# and get rid of any leading or trailing blanks.
parts = split(line, ':')
userid = strip(parts[0])
name = strip(parts[4])
# Trim the contents of the name following the first comma, if any.
compos = find(name, ',')
if compos != -1:
name = name[0:compos]
# If there is no human name, or if equals the login name, say [ none ]
if name == '' or name == userid:
name = '[ none ]'
# Enter into the dictionary list.
iddict[userid] = name
# Sort the names, then print.
ids = iddict.keys()
ids.sort()
for userid in ids:
# Get the human name.
human = iddict[userid]
# Pad the account name.
if len(userid) < 12:
userid = userid + ' ' * (12 - len(userid))
# Spit it out.
print userid + human
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment