uidmin = 1000 uidmax = 60000 gidmin = 1000 gidmax = 60000 for line in open('/etc/login.defs').read().split('\n'): try: line = line[:line.index('#')] except ValueError: pass keyval = line.split() if len(keyval) < 2: continue if keyval[0] == 'UID_MIN': uidmin = int(keyval[1]) if keyval[0] == 'UID_MAX': uidmax = int(keyval[1]) if keyval[0] == 'GID_MIN': gidmin = int(keyval[1]) if keyval[0] == 'GID_MAX': gidmax = int(keyval[1]) def show_passwd(shadowmode=False): for line in open('/etc/passwd').read().split('\n'): try: user, _, uid, _ = line.split(':', 3) except ValueError: continue uid = int(uid) if uid >= uidmin and uid <= uidmax: if shadowmode: yield '{0}:!!:::::::'.format(user) else: yield line def show_group(shadowmode=False): for line in open('/etc/group').read().split('\n'): try: _, _, gid, _ = line.split(':', 3) except ValueError: continue gid = int(gid) if gid >= gidmin and gid <= gidmax: yield line if __name__ == '__main__': if 'passwd' in sys.argv[1]: for line in show_passwd(): print(line) elif 'shadow' in sys.argv[1]: for line in show_passwd(True): print(line) elif 'group' in sys.argv[1]: for line in show_group(): print(line)