需要查看哪些文件在24小时内发生了变化并发送了anemail(Shell脚本)

时间:2012-05-18 14:02:23

标签: shell ssh

我需要一个shell脚本,我可以将其安排为Cron作业。它将指向一个目录并递归检查每个PHP文件以查看它是否在过去24小时内发生了更改,并将其写入日志文件并每晚将日志文件通过电子邮件发送给我们。

因此脚本将执行以下操作:

  1. 在24小时内(家庭/用户/ httpdocs)以递归方式扫描目录已发生变化的文件
  2. 将它们记录到文件(/tmp/diff-2012-05-18.log)
  3. 通过电子邮件将日志文件发送到邮件地址 -
  4. 它应该是在我们自动化之前很容易测试的东西。

    关于如何以有效的方式做到这一点的任何想法,我有一个方法可以做到这一点,但它在服务器上的负担。 -

1 个答案:

答案 0 :(得分:2)

对于修改过的文件部分:

find /path/to/dir -iname '*php' -mtime -1 > /tmp/diff-$(date +%Y-%m-%d).log

然后:

mail user@example.com < /tmp/diff-$(date +%Y-%m-%d).log

理想的做法是首先创建一个具有正确日期的变量$OUTPUT,以防第一个命令花费太长时间并在第二天结束。所以,把它们放在一起:

OUTPUT=/tmp/diff-$(date +%Y-%m-%d).log
find /path/to/dir -iname '*php' -mtime -1 > $OUTPUT
mail user@example.com < $OUTPUT

或者,如果你想要更复杂一些并且针对一个班轮,你可以使用tee将列表保存到文件并同时邮寄(排序):< / p>

find /path/to/dir -iname '*php' -mtime -1 | tee /tmp/diff-$(date +%Y-%m-%d).log | mail user@example.com