[英]Trying to create a Python Script to extract data from .log files
我正在嘗試創建Python腳本,但是有點卡住了,因為它非常具體,所以無法在Google搜索中找到所需的內容。
我需要在兩個.log文件(auth.log和access.log)上運行腳本,以查看以下信息:
查找使用bin帳戶進行了多少次嘗試
因此,bin帳戶嘗試了多少次嘗試進入服務器 。
日志基於被黑客入侵,需要確定如何以及由誰負責。
任何人都可以在我的工作方式上給我一些幫助嗎? 如果需要,我可以提供更多信息。
提前致謝。
編輯:
我已經設法打印出“ bin”出現在日志中的所有時間,這是做到這一點的一種方法。 有誰知道我是否也可以算出 “ bin”出現了多少次?
with open("auth.log") as f:
for line in f:
if "bin" in line:
print line
如果您要使用工具,則可以使用ELK(彈性,Logstash和kibana)。 如果否,那么您必須先閱讀日志文件,然后根據您的要求應用正則表達式。
假設您使用系統日志並且它們的格式是已知且穩定的,那么我的方法將是:
您可以使用shell工具(如grep
, cut
和/或awk
)對日志進行預處理,並從日志中提取相關行(我假設您僅需要例如錯誤條目)。
您可以使用類似這樣的起點。
如果您可能想提取一些數據並將其保存到.txt
文件,則以下示例代碼可能會有所幫助:
import re
import sys
import os.path
expDate = '2018-11-27'
expTime = '11-21-09'
infile = r"/home/xenial/Datasets/CIVIT/Nov_27/rover/NMND17420010S_"+expDate+"_"+expTime+".LOG"
keep_phrases = ["FINESTEERING"]
with open(infile) as f:
f = f.readlines()
with open('/home/xenial/Datasets/CIVIT/Nov_27/rover/GPS_'+expDate+'_'+expTime+'.txt', 'w') as file:
file.write("gpsWeek,gpsSOW\n")
for line in f:
for phrase in keep_phrases:
if phrase in line:
resFind = re.findall('\.*?FINESTEERING,(\d+).*?,(\d+\.\d*)',line)[0]
gpsWeek = re.findall('\.*?FINESTEERING,(\d+)',line)[0]
gpsWeekStr = str(gpsWeek)
gpsSOW = re.findall('\.*?FINESTEERING,'+ gpsWeekStr + ',(\d+\.\d*)',line)[0]
gpsSOWStr = str(gpsSOW)
file.write(gpsWeekStr+','+gpsSOWStr+'\n')
break
print ("------------------------------------")
就我而言,FINESTEERING是我的.log
文件中一個有趣的關鍵字,用於提取數字,包括GPS_Week和GPS_Seconds_of_Weeks。 您可以修改此代碼以適合您自己的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.