He programado el siguiente trabajo cron:
root@alexus:~# crontab -l | grep ^\@hourly
@hourly OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%` ; if [ $? != 0 ] ; then echo $OUT ; fi
root@alexus:~# OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%` ; if [ $? != 0 ] ; then echo $OUT ; fi
root@alexus:~# cat /etc/issue.net
Ubuntu 14.04.3 LTS
root@alexus:~#
y aunque puedo ejecutar EXACTAMENTE el mismo trazador de líneas dentro del shell, cada vez que el trabajo se ejecuta a través de cron, recibo el siguiente correo electrónico:
Asunto: Cron OUT = `/ usr / lib / nagios / plugins / check_disk --include-type = ext4 --warning = 10 / bin / sh: 1: Error de sintaxis: EOF en sustitución de comillas invertidas
por línea de asunto, parece que %
falta todo después de la señal.
¿Cómo escapo correctamente sin romper mi script?
Respuestas:
Tendrá que consultar su
crontab(5)
página de manual. Algunas implementaciones de cron se usarán%
como una nueva línea en el campo de comando, por lo que puede pasar datos al comando en stdinEntonces "cron.cat.out" contiene 2 líneas:
Necesitarás
$()
lugar de backticks"$OUT"
- siempre cite sus variables a menos que necesite los efectos secundarios específicos de dejarlas sin comillas.fuente