我正在寻找一个bash脚本,该脚本将检查文件是否在过去一小时内被修改,如果已经修改则通过电子邮件发送警告。该脚本将在Solaris和Ubuntu中使用。我相信这并不难,但我不是Linux管理员。有人可以帮忙吗?
答案 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上有两个选项:
访问www.sunfreeware.com并下载gnu coreutils,它将在/usr/local/bin
编写一个使用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