------------------------------------------------------------------------------
MC logo
Report Logged-On Users By Name
[^] Code Examples
------------------------------------------------------------------------------
<<OS Path Facility whoson.py Find GIF files>>
#!/usr/bin/python3

# List the account and human names for each person who's logged on.
# The information is taken from the password file, which is
# read and loaded first.  The command line argument (if given) is
# used in place of /etc/passwd.
from sys import argv
from string import *
import os

# 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')

# Read the password file and load the information.
for line in fin.readlines():
    # Lines starting with # are comments.  Clean leading spaces, and
    # skip comments.
    line = str.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 = str.split(line, ':')
    userid = str.strip(parts[0])
    name = str.strip(parts[4])

    # Trim the contents of the name following the first comma, if any.
    compos = str.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

# Run who to see who is on, and print those users.  When printed, take
# them out of the list so each user printed only once.
for line in os.popen('who').readlines():
    user = str.split(line)[0]
    if user in iddict:
        print('%-14s %s' % (user + ':', iddict[user]))
        del iddict[user]
<<OS Path Facility Find GIF files>>