2013-07-16 42 views
0

在特定文件夹中编辑了文件时,它会通知我在我的广告服务器上寻找额外的保护层,以确保没有我不知道的文件编辑。当使用UNIX“查找”

我一直在使用以下命令来检查并查看是否有任何文件在过去7天内被编辑过。

find /home/adserve/public_html/ads/www /home/adserve/public_html/ads/plugins -mtime -7 

但我想加入这一个小的shell脚本,然后有cron的每天一次运行它,但我怎样才能得到它通过电子邮件通知我,如果有过任何修改?

如果没有任何更改,该命令不会输出任何内容,但如果有内容输出这些特定文件。如果找到了,我可以通过电子邮件发送给我吗?

+1

不要忘记,入侵者可以更改文件的修改时间。您应该考虑生成文件的散列(SHA3,SHA2-256)并记录这些文件,然后再进行比较。请记住在推送新版本的文件后更新哈希值。是的,你可以通过电子邮件的结果。 'mailx -s“更改文件”username @ example.com“是一个基本命令,它将从标准输入(例如'find'的输出)读取消息。试用空输入。您可能需要配置邮件传递机制。 –

+0

根据Jonathan Leffler的说法,基线哈希需要存储在主机之外,否则入侵者也可以修改它们,而且你仍然没有获得任何东西。 –

回答

1

cron的默认行为是在命令产生某些输出时发送电子邮件。这意味着你可以将上面的命令添加到你的crontab中。如果要将电子邮件发送到特定的电子邮件地址,则可以使用环境设置MAILTO。例如:

MAILTO="[email protected]" 
# run five minutes after midnight, every day 
5 0 * * * find /home/... -mtime -7 
+0

有没有办法只能发送这个cron的邮件?我在我的crontab中有其他的东西,但只需要“find”命令的输出。 – Analog

+0

@Analog:如果您不想接收某些cron条目的电子邮件,请使用重定向来抑制输出,即将'>/dev/null 2>&1'追加到命令中。 – nosid