每次日志文件更改时,linux脚本都会向我发送一封电子邮件

时间:2018-03-01 22:24:32

标签: bash raspberry-pi gmail daemon debian-stretch

我正在寻找一种简单的方法来持续监控日志文件,并在每次更改日志文件时向我发送电子邮件通知(已添加新行)。

系统在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,所以如果我错过了什么就道歉。

干杯

2 个答案:

答案 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/97447https://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

你完成了!