连续读取Json日志文件并使用Python运行查询

2024-06-30 13:38:24 发布

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

如何连续读取这个json文件(比如最后1分钟.logs),并从json文件中选择特定的日志信息(其中hostname=wazuh)

{“时间戳”:“2020-07-20T11:35:53.884+0000”,“规则”:{“级别”:5,“描述”:“sshd:尝试使用不存在的用户登录”,“id”:“5710”,“mitre”:{“id”:[“T1110”],“战术”:[“凭证访问”],“技术”:[“暴力”},“firedtimes”:477,“邮件”:false,“组”:[“系统日志”,“sshd”,“无效登录”,“身份验证失败”],“pci\U dss:“10.2.4”,“10.2.5”、“10.6.1”、“10.6.1”和“gpg13”的gpg13“:[“7.1”,“gdpr“:[“4.35.7.d”、“4.32.2”;“hipaa”;“10.2.5.5.5.5”、“10.6.6.1”;“gdpr”,“gdpr:[“IV.35.7.7.7.7.d”,“IV.2.2”;“hipaa”,“hipaa”;“hipaa”;;““““““““,,”hipaa:[“3.2.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5”,,,,,,,,“hipaa““““““““,,,,,,”HIPAPAA““““““““““““[9453]:从无效用户断开连接 129.204.148.56端口44580[preauth],“predecoder”:{“程序名称”:“sshd”,“时间戳”:“Jul 20 11:35:52”,“主机名”:“wazuh”},“解码器”:{“名称”:“sshd”},“位置”:“/var/log/auth.log”}……。


Tags: 文件用户名称log信息idjson时间
1条回答
网友
1楼 · 发布于 2024-06-30 13:38:24

我做了一些关于用python监控文件的研究,我的屏幕上出现了watchdog模块,使用这样的模块,我们可以监控文件是否发生了变化,并可以对其执行操作。 看看我为您的特定用例编写的脚本:

import json
import time
import logging
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

def on_modified(event):
  with open(event.src_path) as f:
    for line in f:
      pass
    last_line = line
  alert = json.loads(last_line)
  try:
    if 'wazuh' in alert['predecoder']['hostname']:
      print('Is a Wazuh Alert!')
  except Exception:
    print('JSON does not have predecoder attribute.')
    print(alert)

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
event_handler = FileSystemEventHandler()
event_handler.on_modified = on_modified
observer = Observer()
observer.schedule(event_handler, 'my.log', recursive=True)
observer.start()
try:
  while True:
    time.sleep(1)
except KeyboardInterrupt:
  observer.stop()
observer.join()

被监视的文件名为my.log,与Wazuh alerts.json相比,该文件的每一次修改都是一个新的警报,我们可以将其解析为JSON并检测是否有我们正在寻找的内容

我希望它能帮助你,如果你有任何疑问,请尽管问

问候

相关问题 更多 >