簡體   English   中英

嘗試創建Python腳本以從.log文件提取數據

[英]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工具(如grepcut和/或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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM