我正在尝试创建一个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
答案 0 :(得分:0)
如果您不想使用工具,那么您可以使用ELK(Elastic,Logstash和kibana)。 如果没有,那么你必须阅读第一个日志文件,然后根据你的要求应用正则表达式。
答案 1 :(得分:0)
鉴于您使用系统日志并且其格式已知且稳定,我的方法将类似于:
您可以使用shell工具(如grep
,cut
和/或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。您可以修改此代码以适合您自己的应用程序。