Creo cron-jobs en Ubuntu colocando el ejecutable en uno de /etc/cron.{daily,hourly,monthly,weekly}
. Hay muchos directorios que comienzan con cron:
kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root 724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly
Me gustaría recibir correos electrónicos de mis scripts cuando:
- Un script falla y proporciona un código de salida distinto de cero.
- El guión tiene algo que decirme
Tengo SSMTP instalado y funcionando, envío mi correo desde mi cuenta de Google. El hecho de que SSMTP solo pueda enviar correo usando una cuenta no es un problema para mí. Es solo un servidor doméstico y los usuarios que tengo no tienen la capacidad de agregar trabajos cron.
Me gustaría saber cómo funciona generalmente el envío de correos desde scripts en Linux / Unix en general y en Ubuntu específicamente. También me gustaría saber una buena manera de recibir correos en las dos situaciones anteriores.
/etc/aliases
supone que las entradas siguen el formatoname: value1, value2, ...
? No sé, tal vez el formato se cambió en algún momento en los últimos 8 años.Para recibir correos electrónicos de vixie cron, necesitará algo que reproduzca el comando sendmail. Entonces, la instalación de postfix o SSMTP solucionará esta parte. Si usa postfix, entonces el archivo de alias puede usarse para asignar usuarios del sistema a direcciones de correo electrónico reales.
Agregar MAILTO = "[email protected]" a la parte superior de un crontab hará que se envíe por correo electrónico cualquier salida del trabajo cron. Esto es independientemente del código de error.
Para los scripts que generan errores correctamente en STDERR, es fácil enviarlos por correo electrónico solo cuando salen mal, solo haga esto:
Esto redirigirá solo STDOUT a nulo. Si hay algún mensaje STDERR presente, le enviaremos un correo electrónico.
Sin embargo, he encontrado que algunos scripts generarán errores incorrectamente como STDOUT y estableceré el código de salida en 1. No he encontrado una manera de obtener la salida de estos, pero ignoraré la salida si el código de salida es 0. El único método Puedo pensar en redirigir la salida a un archivo, luego, si el código de salida no es 0, ese archivo debe ser capturado por cron. Aunque parece bastante horrible.
fuente
Si desea enviar toda la salida (stdout y stderr) a una dirección específica, puede usar la
MAILTO
variable. Por ejemplo, coloque lo siguiente en la parte superior del script.fuente
intente agregar "root: [email protected]" a / etc / aliases
eso enviará todos los mensajes de ese usuario a su correo electrónico. Si no desea todos los mensajes, puede crear un usuario específicamente para esto.
Mientras el script genere algo, recibirá un correo.
fuente
En todos mis servidores de producción que normalmente ejecutan alrededor de 20 cronjobs al día, juro por el paquete python-cronwrap. Compruébalo aquí: http://pypi.python.org/pypi/cronwrap . Es realmente fácil de configurar y, sobre todo, confiable.
fuente
No creo que SSMTP esté a la altura de lo que necesita hacer. Necesita algo que pueda "recibir" el correo de los procesos cron y luego enviarlo a su buzón real.
Yo uso Sendmail, pero eso es porque soy una vieja mano de Sun; Sé que se burlan de todos los chicos geniales que usan Postfix en estos días. Su comunidad ubuntu puede guiarlo con la configuración de su sistema de correo.
fuente
Una alternativa: archivo todo el correo raíz en algunos archivos y luego elimino el correo original.
Cron un script (aquí está la parte clave) -
Esto mantiene las cosas ordenadas y puedo vigilarlo. Podría enviar un archivo de correo diario a una identificación de correo electrónico externa, etc.
fuente