Monitoree el sitio para cambios y correos electrónicos diariamente

Me gustaría supervisar varios sitios para que los cambios me notifiquen básicamente cuando se cambian los files. Esto me permite revertir rápidamente los ataques cuando ocurren o cambios realizados por otros usuarios que estaban equivocados. Leí bastante sobre el tema e inicialmente entendí que debería usar incron o incrontab para esto.

El problema es que incron no busca recursivamente, no encontré un script que los correos electrónicos cambien cuando los detecto y que aún no soy una estrella de Bash, por lo que el pirateo es lento.

Buscando recursivamente usando incrontab

Encontré algunos que podrían ayudar en Cybercity a search recursivamente. Este fue un artículo más escrito para usar rsynch cuando se realizan cambios. Solo necesito recibir un correo electrónico cuando se hayan realizado cambios para que pueda hacer algo al respecto si es necesario. O eso o cambios registrados y registrados en una dirección de correo electrónico.

Código en progreso

El código que bash hacer y ejecutar todos los días sería algo así como:

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 

Envío de correos electrónicos a los cambios

Lo que podría necesitar saber es cómo enviar un correo electrónico con los cambios realizados y enviar estos cambios una vez al día a una determinada hora. Enviar por correo electrónico fue discutido aquí . El código para ello fue mail -s "server change" email@emailaddress.com Pero lo que necesito es hacer que funcione en mi fragment. Enviarlo a diario es probablemente como un crontab regular, por lo que el problema principal es imprimir todo en un correo electrónico y enviarlo.

Cuestiones

Entonces, mi pregunta es, ¿cómo puedo arreglar este script para enviar correos electrónicos a los cambios y cómo puedo hacerlo funcionar diariamente?

Actualizar

Me dijeron que podía lograr todo esto con (Sub) versión y un cronjob también. Subversion se puede usar para comparar una copy local o dev en la copy en vivo y con un cronjob puedo progtwigr el informe de diff para que se me envíe. Sé cómo puedo hacer un cronjob y tengo la siguiente configuration

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

Cualquier cambio que haga en dev puedo presionar el sitio en vivo usando svn update.

Pero lo que necesito ahora es un script para enviarme los cambios realizados en el sitio en vivo en comparación con el sitio repo o dev. Estoy leyendo acerca de diff aquí . ¿Cómo puedo comparar el sitio en vivo con el repository y enviarme la diferencia en un correo electrónico?

@tripleee me dijo el directory cd /path/to/directory; svn diff | mail -s "diff" you@example.com cd /path/to/directory; svn diff | mail -s "diff" you@example.com cd /path/to/directory; svn diff | mail -s "diff" you@example.com como lo haría un cronjob. Estoy investigando esto.

¿Recolecta el resultado en un file, ejecuta un crontab regular diario para enviarle un file por correo electrónico y replacelo con un file vacío?

Como tal, inotify podría ser exagerado: solo use un sistema de control de versiones y ejecute su function diff cada mañana (de todos modos, debe tener control de versión, ¿no?):

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

Coloque esto en el crontab del usuario que posee el /path/to/directory ; este usuario recibirá la diferencia como un correo electrónico de Cron. Si desea networkingirigirlo a otro lugar, intente configurar la variable MAILTO en el crontab, o use svn diff | mail -s "server change" user@elsewhere.example.com svn diff | mail -s "server change" user@elsewhere.example.com

Esta solución presupone que el sitio en vivo es una comprobación de svn real, no por ejemplo, el resultado de la svn export de svn export . Algunos sitios no permiten esto por razones de security (si el sitio en vivo es pirateado, el pirata informático puede acceder a su repository), pero como entiendo de sus comentarios, ese no es el caso aquí.