Python:解析来自远程的日志

2024-09-28 22:25:32 发布

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

我需要处理来自远程目录的日志文件并解析它们的内容。此任务可分为以下几部分:

  1. 使用条件运行ssh find,以确定要处理的文件
  2. 使用zgrep获取这些文件的相关内容
  3. 用python算法处理来自2的结果并存储到本地数据库

步骤13非常快,因此我希望改进步骤2。在

文件以gz或明文形式存储,处理它们的顺序非常重要。需要先处理较新的日志,以避免与旧日志不一致。在

为了获取和过滤日志行,我尝试了以下方法:

  1. 将日志下载到临时文件夹中,并在下载时对其进行并行处理。python进程触发一个scp命令,一个并行线程检查temp文件夹是否已完成下载,直到scp完成。如果文件已下载,请运行zgrep,处理并删除该文件。在
  2. 运行ssh remote zgrep "regex" file1 file2 file3,获取结果并进行处理。在

方法2是一个更具可读性和优雅的解决方案,但是它也慢得多。使用方法1,我可以在大约1:30分钟内下载和解析280个文件。使用方法2,大约需要5:00分钟。下载过程方法的一个主要问题是,当脚本运行时,目录可能会被更改,这导致代码中需要进行多次检查。在

为了从python运行shell命令,我目前正在使用subprocess.check_output和{}和{}模块。在

你能想出改进这个算法的方法吗?在


Tags: 文件方法命令目录文件夹算法数据库内容