如何构建python脚本来解析exim日志文件并生成发送域帐户

2024-06-16 10:47:43 发布

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

我想构建一个python脚本,它通过我的smtp服务器上的exim日志文件进行greps,并报告每天、每周和每月大多数发送域的总数。 我对python还很陌生,我正在努力实现这个目标。在

exim日志文件中的相关行通常如下所示:

Feb 24 00:00:23 smtp1.mail.net exim[5660]: 2014-02-24 00:00:23 1Wuniq-mail-idSo-Fg -> someuser@somedomain.com R=mail T=remote_smtp H=smtp.mail.net [000.00.34.17]

Feb 24 00:00:23 smtp1.mail.net exim[5660]: 2014-02-24 00:00:23 1Wuniq-mail-idSo-Fg -> someuser@somedomain.com R=mail T=remote_smtp H=smtp.mail.net [000.00.34.17]

Feb 24 00:00:23 smtp1.mail.net exim[5661]: 2014-02-24 00:00:23 1Wuniq-mail-idSm-1h => someuser@somedomain.com R=mail T=pop_mail_net H=mta.mail.net [000.00.34.6]

Feb 24 00:00:23 smtp1.mail.net exim[5661]: 2014-02-24 00:00:23 1Wuniq-mail-idSm-1h Completed

sysos和{}模块应该足以实现这一点(?)。 我还想使用字典,因为我想每天在cron中运行脚本。在

主要的问题是:怎样才能看透我的沟只有相关的线路?Exim日志很多,我只想grep包含“=>;和->;”的行。与以“1W”开头的uniq maild ID一起使用。 脚本在日志文件最后一次执行时也应该停止。 为了生成可靠的每日发送域计数,这是必要的。在

我们将非常感谢您的帮助。在


Tags: 文件脚本comnetremotemailsmtpfeb
1条回答
网友
1楼 · 发布于 2024-06-16 10:47:43

您可以先反向读取文件,方法是:

    logFileData = []
    with open( pathToLogFile, "r" ) as logfile:
            logFileData = reversed( logfile.readlines() )

然后您可以从以下位置获取每个日志文件数据的部分:

^{pr2}$

对于字符串中的解析时间,请看pythondateutil包。另请参阅相关问题answered。在

我假设这是一个脚本,这意味着你不能'记得'你上次把它放在哪里了。为此,您可以在读取日志文件时对其本身进行编辑,用一个唯一的符号标记您离开的位置。下一次读取时,只读取从文件末尾到您的符号。在

编辑:更正了timestamp计算

相关问题 更多 >