destinationFile = "/tmp/logins.csv"
sourceFile = "/var/log/auth.log"
criteria = "Invalid user"
matches = []
with open(sourceFile) as src:
import re
for line in src.read().split("\n"):
if not criteria in line: continue
login = re.sub(".*" + criteria + " (\w+).*", r"\1", line)
matches.append(login)
matches = sorted(list(set(matches)))
count = len(matches)
if count == 0:
import sys
print("No lines having '{}' in {}. Abort.".format(criteria, sourceFile))
exit(1)
else:
with open(destinationFile, "w+") as dst:
dst.write("\n".join(matches))
print("{} login(s) written to {}.".format(count, destinationFile))
#M# file open/read/parse/write, regex/regular expression, regex group capture/replacement, list sort, list clean/remove duplicates, print list in file, system error