尝试创建一个Python脚本从.log文件中提取数据

2024-04-27 04:49:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个Python脚本,但是我有点卡住了,在Google搜索中找不到我要找的内容,因为它非常具体。在

我需要在两个日志文件上运行一个脚本(验证日志以及访问.log)查看以下信息:

Find how many attempts were made with the bin account

那么bin帐户尝试进入服务器的次数是多少。在

这些日志是基于被黑客攻击的,需要确定如何以及谁负责。在

有人能帮我做这件事吗?如果需要,我可以提供更多信息。在

提前谢谢。在

编辑:

我设法打印出日志中出现“bin”的所有时间,这是一种方法。有人知道我能不能数一数“bin”出现的次数吗?在

with open("auth.log") as f:
for line in f:
    if "bin" in line:
        print line

Tags: 文件in脚本log信息内容binwith
3条回答

如果您使用系统日志,并且它们的格式已知且稳定,那么我的方法如下:

  • 确定一组关键字(公共关键字或每个日志一个关键字)
  • 对于每个日志,逐行迭代
  • 一旦关键词匹配,从每一行添加相关信息,例如字典

您可以使用shell工具(如grepcut和/或awk)预处理日志并从日志中提取相关行(我假设您只需要错误条目)。在

您可以使用this之类的内容作为起点。在

如果您可能有兴趣提取一些数据并将其保存到.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每周和GPS秒数。您可以修改此代码以适合您自己的应用程序。在

如果你不想用这个工具,那么你可以用麋鹿(Elastic,Logstash和kibana)。 如果没有,那么您必须读取第一个日志文件,然后根据需要应用regex。在

相关问题 更多 >