【问题标题】:Need to See which files have changed in 24 hours and send anemail (Shell Script)需要查看哪些文件在 24 小时内发生了更改并发送电子邮件(Shell 脚本)
【发布时间】:2012-05-18 14:02:23
【问题描述】:

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

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

  1. 递归扫描目录以查找在 24 小时内更改的所有 php 文件 (home/user/httpdocs)
  2. 将它们记录到文件中 (/tmp/diff-2012-05-18.log)
  3. 通过电子邮件将日志文件发送到电子邮件地址 -

它应该是在我们自动化之前很容易测试的东西。

关于如何以有效方式执行此操作的任何想法,我有一种方法可以完成其中的一些,但它对服务器征税。 -

【问题讨论】:

  • 您是要查找您或您的同事已更新的文件,还是要查找可能已被入侵者恶意修改的文件? Eduardo Ivanec 的回答非常适合第一种情况,但不适用于第二种情况。

标签: shell ssh


【解决方案1】:

对于修改过的文件部分:

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 将列表保存到文件并同时邮寄(有点):

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

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2011-09-16
    • 2010-12-19
    • 1970-01-01
    • 2016-05-05
    • 2014-10-25
    相关资源
    最近更新 更多