74 lines
2.1 KiB
Python
Executable File
74 lines
2.1 KiB
Python
Executable File
#! /usr/bin/env python3
|
|
def read_file(path: str) -> "List of lines":
|
|
#f = open(path, 'r')
|
|
with open(path, 'r') as f:
|
|
# f.read(buflen) - binary read
|
|
# f.readline() - 1 Textzeile lesen -> str
|
|
# f.readlines - alle Textzeilen lesen ->str
|
|
# f ist gleichzeitig Iterator
|
|
# 1 möglichkeit
|
|
#lines = list(map(lambda s : s.rstrip(), f))
|
|
# 2 möflichkeit
|
|
lines = list(map(str.rstrip, f))
|
|
# 3 möglichkeit
|
|
#lines = []
|
|
#for line in f.readlines():
|
|
# lines.append(line.rstrip())
|
|
#f.close()
|
|
return lines
|
|
|
|
def parse_passwd_lines(line: str) -> "Dict of passwd details":
|
|
parts = line.split(':')
|
|
userdict = {
|
|
"username" : parts[0],
|
|
"uid" : int(parts[2]),
|
|
"gid" : int(parts[3]),
|
|
"realname" : parts[4].split(',')[0],
|
|
"gecos" : parts[4],
|
|
"home" : parts[5],
|
|
"shell": parts[6]
|
|
}
|
|
return userdict
|
|
|
|
def build_userlist(lines) -> "List of user dicts":
|
|
result = []
|
|
for line in lines:
|
|
result.append(parse_passwd_lines(line))
|
|
return result
|
|
|
|
def print_userlist_sorted_by_username(userlist):
|
|
#ruft für jedes Element key(elem) also e im Lambda-Ausdruck ist ein Element der Liste user dict
|
|
for user in sorted(userlist, key=lambda e: e['username'].lower()):
|
|
print("{:5} {:32} {}".format(
|
|
user['uid'],
|
|
user['username'],
|
|
user['realname'],
|
|
user['home'],
|
|
user['shell']
|
|
)
|
|
)
|
|
|
|
def print_userlist_sorted_by_uid(userlist):
|
|
for user in sorted(userlist, key=lambda e: e['uid']):
|
|
print( "{:5} {:32} {}".format(
|
|
user['uid'],
|
|
user['username'],
|
|
user['realname'],
|
|
user['home'],
|
|
user['shell']
|
|
)
|
|
)
|
|
def main():
|
|
output_functions = {
|
|
'username': print_userlist_sorted_by_username,
|
|
'uid': print_userlist_sorted_by_uid,
|
|
|
|
}
|
|
outfunc = output_functions['username']
|
|
outfunc = output_functions['uid']
|
|
lines = read_file("/etc/passwd")
|
|
userlist = build_userlist(lines)
|
|
outfunc(userlist)
|
|
|
|
|
|
main() |