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

时间:2016-02-29 13:25:49

标签: python file

我正在尝试创建一个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

3 个答案:

答案 0 :(得分:0)

如果您不想使用工具,那么您可以使用ELK(Elastic,Logstash和kibana)。 如果没有,那么你必须阅读第一个日志文件,然后根据你的要求应用正则表达式。

答案 1 :(得分:0)

鉴于您使用系统日志并且其格式已知且稳定,我的方法将类似于:

  • 标识一组关键字(常见或每个日志一个)
  • 对于每个日志,逐行迭代
  • 一旦关键字匹配,请添加每行中的相关信息。字典

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

您可以使用this之类的东西作为起点。

答案 2 :(得分:0)

如果您可能想提取一些数据并将其保存到docker rm文件中,则以下示例代码可能会有所帮助:

.txt

就我而言,FINESTEERING是我的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 ("------------------------------------") 文件中一个有趣的关键字,用于提取数字,包括GPS_Week和GPS_Seconds_of_Weeks。您可以修改此代码以适合您自己的应用程序。