Я пытаюсь проанализировать файл журнала в python 3.7. У меня есть такие записи:
2020-07-13 18:05:43.332880;sshd;1144;logon root from 192.168.179.9 started
2020-07-13 18:10:12.332880;sshd;1854;logon admin from 192.168.179.3 finished
2020-07-14 03:17:02.332880;sshd;1169;logon admin from 10.0.1.5 failed
2020-07-14 03:19:30.332880;sshd;1297;logon root from 10.0.1.3 failed
Я прочитал файл в python как таковой:
def readLog(fname):
""" Read log-events from file """
lines = []
file = open("<pathname>", encoding = 'utf-8')
lines = file.read()#.split('\n')
file.close()
return lines # returns the logfile
Мне нужно получить сводку в виде вывода, выглядящего следующим образом:
day:2020-07-01,prog:SSH,success:12,failure:13,ip:1.2.3.4
Итак, цель состоит в том, чтобы получить всю информацию, такую как дата, количество неудачных и успешных попыток для каждого IP-адреса. Я пробовал разделить, но не могу заставить его работать, я пробовал несколько подходов, но пока безрезультатно. Я пробовал:
events = readLog(logFname)
for event in events:
event.split(" ",4)
print(event)
#ipList=[]
#ipList.append(event)
IP после 4-го пробела, но мне нужен только ip, поэтому только с 4-го пробела до 5-го. Не знаю, как это сделать. Но сначала мне нужно заставить работать сплит, а затем я могу попытаться решить детали. Я посмотрел на inte rnet и нашел несколько решений (см. Источники ниже), но мне не удалось их правильно использовать или заставить работать. Я пробовал что-то вроде этого:
events = readLog(logFname)
for event in events:
[i.split(" ", 4) for i in event]
Надеюсь, кто-то может мне с этим помочь, спасибо. Источники:
Как разделить элементы списка?
Python Распознавание IP в строке
http://www.datasciencemadesimple.com/remove-spaces-in-python/