繁体   English   中英

从日志文件中提取信息并使用python发送通知电子邮件

[英]pulling info from a log file and sending a notification email using python

我正在做一个工作项目,需要我从日志文件中提取信息并在发现特定信息时发送通知。 例如,我正在处理的确切问题是我需要创建一个Python脚本,该脚本将查找may /var/log/auth.log(FreeBSD系统)并拉出任何无效的SSH登录尝试,然后继续向我发送电子邮件,并向另一个发送电子邮件任何时候有违法行为的同事。

我一直在寻找几天,但收效甚微,任何帮助将不胜感激。

我认为您真正想要的是一个类似fail2ban的守护进程,该守护进程专门用于检查日志文件是否存在入侵尝试。

fail2ban Wiki:

Fail2ban扫描日志文件(例如/ var / log / apache / error_log),并禁止显示恶意迹象的IP(过多的密码错误,寻找漏洞利用等)。通常,Fail2Ban然后用于更新防火墙规则以拒绝IP地址。尽管还可以配置任何其他任意操作(例如, 发送电子邮件或弹出CD-ROM托盘),但仍需指定的时间量。 开箱即用Fail2Ban带有针对各种服务(apache,curier, ssh等)的过滤器。

这可能比您自己烘焙的任何解决方案都更好。


就是说,如果您确实想自己滚动,天真的实现文件定期检查的方法就是每五分钟读取一次,看看是否已更改。

聪明的方法是使用操作系统的文件监视服务,该服务挂接到文件系统驱动程序中,并在文件更改后立即通知您。 这具有双重好处,您的代码将占用更少的CPU时间,并且只要文件发生更改,它就会立即响应。

在Linux上,该服务称为inotify BSD和Windows具有等效功能。

您可以每隔几分钟运行一次cron作业,以检查该文件中的更改。 如果有任何更改,它将通过使用例如smtplib向您发送电子邮件。 这是sendgrid使用smtplib的示例: http ://docs.sendgrid.com/documentation/get-started/integrate/examples/python-email-example-using-smtp/

您如何确定文件是否被修改?

  1. 您保留文件的副本,就像在上一个脚本运行中一样,然后将其与当前内容进行比较
  2. 您检查文件的最后修改时间

这只是一个可以调整的一般概念,所有的“成分”都可以在Google上找到,因此您应该可以通过谷歌搜索来实现它。

希望这可以帮助。

作为Cron工作的粗略想法:

with open('/var/log/auth.log') as auth:
    for line in auth:
        if 'blahblah' in line:
            # send email

您需要查看电子邮件模块以获取电子邮件详细信息。 您还需要一种跟踪已扫描内容的方法,这样就不会最终发送重复的电子邮件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM