0

我想监视几个站点的更改,以便在添加文件更改时基本上通知我。这样我就可以在黑客发生或其他用户做出错误的更改时快速逆转。我读了很多关于这个主题的文章,我最初明白我应该为此使用incron 或 incrontab

问题是 incron 没有递归搜索,我没有找到一个脚本在检测到时会更改电子邮件,而且我还不是 Bash 明星,所以黑客攻击很慢。

使用 incrontab 递归搜索

我确实在 Cyber​​city 找到了一些可以帮助递归搜索的方法。这是一篇更多关于在进行更改时使用 rsynch 的文章。我只需要在进行更改时收到一封电子邮件,以便我可以在需要时做一些事情。在电子邮件地址记录和 ping 的任何一个或更改。

正在进行中的代码

我每天尝试制作和运行的代码类似于:

find /home/user/site.com -type d -print0 | xargs -0 -I{} echo "{} IN_CLOSE_WRITE,IN_CREATE,IN_DELETE email-me '*.tmp' -a /home/user/site.com/ user@www2.example.com:/home/user/site.com/" > /etc/incron.d/webroot.conf

通过电子邮件发送更改

我可能需要弄清楚的是如何发送一封包含所做更改的电子邮件,并每天在特定时间发送一次这些更改。通过电子邮件发送它在这里进行了讨论。它的代码是mail -s "server change" email@emailaddress.com但我需要的是让它在我的代码段中工作。每天发送它可能就像一个常规的 crontab,所以主要问题是在电子邮件中打印所有内容并发送它。

问题

所以我的问题是,我怎样才能修复这个脚本以电子邮件更改,我怎样才能让它每天运行?

更新

有人告诉我,我也可以使用 (Sub)version 和 cronjob 来实现这一切。Subversion 可用于将本地或开发副本与实时副本进行比较,并且通过 cronjob,我可以安排将差异报告发送给我。我确实知道如何制作 cronjob,并且我有以下设置

svn.site.com with repo
dev.site.com with beta site/backup site
site.com live site

我在 dev 上所做的任何更改都可以使用 svn update 推送实时站点。

但我现在需要的是一个脚本,用于向我发送与 repo 或 dev 站点相比在实时站点上所做的更改。我在这里阅读 diff 。我现在如何将实时站点与 repo 进行比较,并通过电子邮件将差异发送给我?

@tripleee 告诉我cd /path/to/directory; svn diff | mail -s "diff" you@example.com,就像 cronjob 一样。我正在调查这个。

4

1 回答 1

1

将输出收集到一个文件中,运行每日常规 crontab 以通过电子邮件向您发送该文件并将其替换为一个空文件?

因此, inotify 可能有点矫枉过正——只需使用版本控制系统并每天早上运行它的 diff 函数(无论如何你应该有版本控制,对吧?):

00 09 * * * cd /path/to/directory && svn diff

把它放在拥有的用户的 crontab 中/path/to/directory;该用户将收到来自 Cron 的电子邮件作为差异。如果您想将其重定向到其他地方,请尝试MAILTO在 crontab 中设置变量,或使用svn diff | mail -s "server change" user@elsewhere.example.com

此解决方案假定实时站点是实际svn结帐,而不是例如svn export. 出于安全原因,某些站点不允许这样做(如果实时站点被黑客入侵,黑客可以访问您的存储库!)但正如我从您的评论中了解到的那样,这里不是这种情况。

于 2013-08-16T07:14:44.253 回答