每次日志文件更改时,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/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

你会完成的!

以上是关于每次日志文件更改时,linux脚本都会向我发送一封电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

每次我运行`pip`来安装任何软件包时,它都会向我显示警告[重复]

如何自动运行大量 perl 脚本?

即使启用了通过 JavaScript 加载的图像,也会向我抛出 CORS 错误

文件更改句柄,QSocketNotifier 由于无效套接字而禁用

使用php脚本定期检查LAMP服务器主页时返回奇怪的Javascript

Yagmail脚本未发送多个附件