每次日志文件更改时,linux脚本都会向我发送一封电子邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每次日志文件更改时,linux脚本都会向我发送一封电子邮件相关的知识,希望对你有一定的参考价值。
我正在寻找一种简单的方法来持续监控日志文件,并在每次更改日志文件时向我发送电子邮件通知(已添加新行)。
系统在Raspberry Pi 2(OS Raspbian / Debian Stretch)上运行,日志监视作为守护进程运行的GPIO python脚本。
我需要一些非常简单和轻量级的东西,甚至不需要关注新日志条目的文本,因为我知道它说的是什么,它总是一样的。最后24行文字。
此外,log.txt文件每天午夜重新创建,因此可能代表另一个问题。
我已经有一个工作的python脚本通过gmail发送一个简单的电子邮件(称为sendmail.py)
到目前为止我尝试的是创建并运行以下bash脚本:
monitor log.是
#!/bin/bash
tail -F log.txt | python ./sendmail.py
问题是它每次执行时都会发送一封电子邮件,但是当日志实际发生变化时,它就会退出。
我真的很喜欢linux,如果我错过了什么,请道歉。
干杯
你要求简单:
#!/bin/bash
cur_line_count="$(wc -l myfile.txt)"
while true
do
new_line_count="$(wc -l myfile.txt)"
if [ "$cur_line_count" != "$new_line_count" ]
then
python ./sendmail.py
fi
cur_line_count="$new_line_count"
sleep 5
done
我已经做了很多不同的方式。如果你每分钟运行一个计算行数(wc -l)的cron作业将其与存储的计数(例如在/ tmp / myfilecounter中)进行比较,并在数字不同时发送电子邮件。
如果你有inotify,有更多直接的方法可以在文件更改时“唤醒”,例如https://serverfault.com/a/780522/97447或https://serverfault.com/search?q=inotifywait。
如果你不介意在系统中添加一个包,那么每当修改一个文件或目录时,incron就是一种非常方便的运行脚本的方法,看起来它在raspbian上是支持的(在内部使用inotify)。 https://www.linux.com/learn/how-use-incron-monitor-important-files-and-folders。看起来很简单:
sudo apt-get install incron
sudo vi /etc/incron.allow # Add your userid to this file (or just rm /etc/incron.allow to let everyone use incron)
incron -e # Add the following line to the "cron" file
/path/to/log.txt IN_MODIFY python ./sendmail.py
你会完成的!
以上是关于每次日志文件更改时,linux脚本都会向我发送一封电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
每次我运行`pip`来安装任何软件包时,它都会向我显示警告[重复]
即使启用了通过 JavaScript 加载的图像,也会向我抛出 CORS 错误
文件更改句柄,QSocketNotifier 由于无效套接字而禁用