检查文件修改日期和电子邮件(如果已更改)

时间:2013-01-04 20:23:28

标签: linux solaris

我正在寻找一个bash脚本,该脚本将检查文件是否在过去一小时内被修改,如果已经修改则通过电子邮件发送警告。该脚本将在Solaris和Ubuntu中使用。我相信这并不难,但我不是Linux管理员。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:12)

这个怎么样?

#!/bin/bash

[[ -z `find /home/spatel/ -mmin -60` ]]

if [ $? -eq 0 ]
then
    echo -e "nothing has changed"
else
    mail -s "file has been changed" spatel@example.com
fi

将此脚本放入每小时的cron作业

01 * * * * /path/to/myscript 

答案 1 :(得分:2)

linux支持inotify命令。您可以使用它来监视文件活动 - 文件更改,文件创建,无论何时您想要的任何内容。

上面给出的find命令不适用于开箱即用的solaris。这对linux很好。 Solaris上有两个选项:

  1. 访问www.sunfreeware.com并下载gnu coreutils,它将在/usr/local/bin

  2. 中安装gnu find(以上版本的find)
  3. 编写一个使用touch命令的脚本,等待超过60分钟然后测试文件,唯一的问题是这个脚本永远在后台运行,你可以避免这种情况,如果你知道一些perl来生成一个字符串适合touch -t [time string]以过去一小时的时间创建文件 这是永远运行的版本:

    while true

    do
       touch dummy
    
       sleep 3615 # 1 hour 15 seconds
    

    [file_i_want_to_test -nt dummy]&& echo'file blah changed'|         mailx -s'文件已更改'me@myco.com

    done