我正在寻找一种简单的方法来持续监控日志文件,并在每次更改日志文件时向我发送电子邮件通知(已添加新行)。
系统在Raspberry Pi 2(OS Raspbian / Debian Stretch)上运行,日志监视作为守护进程运行的GPIO python脚本。
我需要一些非常简单和轻量级的东西,甚至不关心新日志条目的文本,因为我知道它说的是什么,它总是一样的。最后24行文字。
此外,每天午夜都会重新创建log.txt文件,因此这可能代表另一个问题。
我已经有一个工作的python脚本通过gmail发送一个简单的电子邮件(称为sendmail.py)
到目前为止我尝试的是创建并运行以下bash脚本:
monitorlog.sh
#!/bin/bash
tail -F log.txt | python ./sendmail.py
问题是它每次执行时都会发送一封电子邮件,但是当日志实际发生变化时,它就会退出。
我真的很喜欢linux,所以如果我错过了什么就道歉。
干杯
答案 0 :(得分:0)
你问的很简单:
#!/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
答案 1 :(得分:0)
我已经做了很多不同的方式。如果你每分钟运行一个计算行数(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
你完成了!