Esta pagina se ve mejor con JavaScript habilitado

Debugear script en CRON

 ·  🎃 kr0m

En el handbook de FreeBSD tenemos instrucciones concretas sobre como configurar Cron, en ese mismo manual podemos encontrar una parte muy interesante en la que muestra como ejecutar un script/binario exactamente igual como lo haría Cron, de este modo podemos debugear cualquier tipo de problema.

Primero obtenemos las variables de entorno presentes en Cron ejecutando env y guardando la salida a un fichero:

crontab -e

*/1 * * * * env > /tmp/env

Obtenemos las variables utilizadas en la ejecución de Cron:

grep -e SHELL -e PATH -e HOME -e LOGNAME /tmp/env

LOGNAME=kr0m
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/kr0m/bin
HOME=/home/kr0m
SHELL=/bin/sh

Finalmente ejecutamos el script exactamente igual como lo haría Cron, de este modo podemos ver si dá algún tipo de problema:

env -i SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/kr0m/bin HOME=/home/kr0m LOGNAME=kr0m PATH_TO_SCRIPT

Siempre, siempre, siempre ejecutar los scripts de este modo antes de crontabearlos ya que si no lo hacemos puede que confiemos en su ejecución y realmente no funcionen.

Si el Cron precisa de alguna entrada por parte del usuario o si realiza alguna operación vía SSH y la key está protegida siempre podemos utilizar Expect tal como hicimos en este artículo anterior .

Si te ha gustado el artículo puedes invitarme a un RedBull aquí