使用python从日志文件中提取信息并发送通知电子邮件
我正在从事一个项目,该项目要求我从日志文件中提取信息,并在发现特定信息时发送通知。例如,我正在处理的确切问题是,我需要创建一个python脚本,该脚本将查看may/var/log/auth.log(FreeBSD系统)并提取任何无效的SSH登录尝试,然后在有冒犯行为时继续给我和另一位同事发电子邮件使用python从日志文件中提取信息并发送通知电子邮件,python,ssh,freebsd,Python,Ssh,Freebsd,我正在从事一个项目,该项目要求我从日志文件中提取信息,并在发现特定信息时发送通知。例如,我正在处理的确切问题是,我需要创建一个python脚本,该脚本将查看may/var/log/auth.log(FreeBSD系统)并提取任何无效的SSH登录尝试,然后在有冒犯行为时继续给我和另一位同事发电子邮件 我已经到处找了几天了,但几乎没有成功。非常感谢您的帮助。您可以每隔几分钟运行一次cron作业,检查该文件中的更改。如果有任何更改,它将通过电子邮件发送给您,例如使用smtplib。下面是一个使用sen
我已经到处找了几天了,但几乎没有成功。非常感谢您的帮助。您可以每隔几分钟运行一次
cron
作业,检查该文件中的更改。如果有任何更改,它将通过电子邮件发送给您,例如使用smtplib
。下面是一个使用sendgrid的smtplib示例:
如何确定文件是否被修改
希望这有帮助。您可以每隔几分钟运行一次
cron
作业,检查该文件中的更改。如果有任何更改,它将通过电子邮件发送给您,例如使用smtplib
。下面是一个使用sendgrid的smtplib示例:
如何确定文件是否被修改
希望这能有所帮助。我认为您真正想要的是一个类似于
fail2ban
的守护进程,它专门用于检查日志文件中的入侵企图
从
Fail2ban扫描日志文件(例如/var/log/apache/error_log)并禁止IP
显示恶意标志——密码失败太多,正在查找
对于漏洞攻击等,通常故障2可用于更新防火墙
在指定时间内拒绝IP地址的规则,
尽管有任何其他任意行为(如发送电子邮件),或
也可以配置弹出CD-ROM托盘)。开箱即用
Fail2Ban为各种服务提供了过滤器(apache、curier、ssh,
等等)
这可能比你自己烘焙的任何解决方案都更有效
也就是说,如果你真的想自己滚动,那么实现定期检查文件的简单方法就是每五分钟读取一次,看看是否有更改 更聪明的方法是使用操作系统的文件监视服务,该服务钩住文件系统驱动程序,并在文件更改时通知您。这有两个好处,即您的代码将占用更少的CPU时间,并且每当文件更改时,它将立即响应
在Linux上,该服务称为
inotify
。BSD和Windows有一个等价的功能。我认为您真正想要的是一个类似于fail2ban
的守护进程,它专门用于检查日志文件中是否有入侵企图
从
Fail2ban扫描日志文件(例如/var/log/apache/error_log)并禁止IP
显示恶意标志——密码失败太多,正在查找
对于漏洞攻击等,通常故障2可用于更新防火墙
在指定时间内拒绝IP地址的规则,
尽管有任何其他任意行为(如发送电子邮件),或
也可以配置弹出CD-ROM托盘)。开箱即用
Fail2Ban为各种服务提供了过滤器(apache、curier、ssh,
等等)
这可能比你自己烘焙的任何解决方案都更有效
也就是说,如果你真的想自己滚动,那么实现定期检查文件的简单方法就是每五分钟读取一次,看看是否有更改 更聪明的方法是使用操作系统的文件监视服务,该服务钩住文件系统驱动程序,并在文件更改时通知您。这有两个好处,即您的代码将占用更少的CPU时间,并且每当文件更改时,它将立即响应
在Linux上,该服务称为
inotify
。BSD和Windows有一个等效的功能。作为cron作业的粗略概念:
with open('/var/log/auth.log') as auth:
for line in auth:
if 'blahblah' in line:
# send email
您将要查看电子邮件的详细信息。您还需要一种跟踪已扫描内容的方法,这样您就不会发送重复的电子邮件。对于cron作业来说,这是一个粗略的想法:
with open('/var/log/auth.log') as auth:
for line in auth:
if 'blahblah' in line:
# send email
您将要查看电子邮件的详细信息。您还需要一种跟踪已扫描内容的方法,这样您就不会发送重复的电子邮件。注意:我提供了一种我认为可以解决实际问题的解决方案(SSH日志文件监控)但是,如果您真的想在Python中推出自己的自定义解决方案,Gabi和Ethan的答案将对您有所帮助。注意:我给出了我认为可以解决您实际问题的解决方案(SSH日志文件监控),但是Gabi和Ethan的答案将帮助您在Python中推出自己的自定义解决方案。如我的答案所示,操作系统的文件监视服务可能是检查文件是否已更改的更好方法。与其反复轮询文件以查看其
mtime
是否已更改,只需请求操作系统在文件写入时通知您即可。(在Linux上,使用inotify
)在FreeBSD上,您可以通过devel/py kqueue端口使用kqueue(2)。在我的回答中,操作系统的文件监视服务可能是检查文件是否已更改的更好方法。而不是反复轮询文件以查看是否