用于文件更改电子邮件通知的 Linux 脚本(不是 inotify 或任何其他实用程序)

用于文件更改电子邮件通知的 Linux 脚本(不是 inotify 或任何其他实用程序)

我正在寻找 Linux 脚本(不是 inotify 工具或任何其他实用程序),只要文件内容发生更改,它就会通过电子邮件通知我。我通过谷歌管理了示例脚本,但我必须手动运行它,并且它不会触发任何电子邮件

[[ -z `find /path/to/file -mmin -60` ]]

if [ $? -eq 0 ]
then
  echo -e " /path/to/file nothing has changed"
else
  mail -s "/path/to/file has been changed" mailid
fi

答案1

一旦您有了一个可以执行您想要执行的操作的脚本,请将脚本添加到您的 cron 表(或crontab),该作业将以您喜欢的任何频率运行。所以:

#!/bin/bash
if ! [[ -z $(find /path/to/file -mmin 60) ]]; then
    # The file was changed, so:
    echo -e "The hash is:\n$(md5sum /path/to/file)" | mail -s "/file has changed on $(hostname -s) [email protected]"
else
    # If this is in the crontab, remove this else stanza; cron
    # jobs should not write to standard output, lest that output
    # be sent to the local mailer daemon to drop it into the owner's
    # mailbox.
    echo "No changes to /path/to/file detected."
fi

答案2

但我必须手动运行它

真正重要的是您需要多长时间收到电子邮件通知。如果不需要非常快,那么 cron 作业就足够了。要么在其他地方捕获文件修改时间并比较该值,要么使用“find”和 -mtime / -mmin。或者触摸标志文件。如果目标文件比标志文件新,请发送电子邮件,然后刷新标志文件上的时间戳。

如果您想要(接近)立即通知,请查看因克朗

并且它不会触发任何电子邮件

……这是不可能的。检查你的日志。为什么电子邮件没有送达这里经常被问到。

相关内容