Tengo un script que funciona cuando lo ejecuto desde la línea de comandos, pero cuando lo programo cron
aparece errores que no puede encontrar archivos o comandos. Mi pregunta es doble:
Cuando programo un trabajo cron usando
crontab -e
, ¿usa mi ID de usuario como base para sus permisos? ¿O utiliza una identificación de usuario cron de algún tipo y sus permisos relacionados?Cuando se inicia un trabajo cron, ¿cuál es el directorio de trabajo? ¿Es el directorio donde especifico el script para ejecutar, o un directorio diferente?
Aquí está mi trabajo cron:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Aquí está el guión real:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Estos son los errores que obtengo cuando veo el mail
mensaje producido por cron
:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
No puede encontrar el template.txt
pero reside en el mismo directorio que el script. Tampoco puede ejecutarse ssmtp
, pero puedo como mi usuario. ¿Qué me falta para que esto funcione correctamente?
cron
tendría el suyo propioPATH
o puedo consultar a mi usuarioPATH
? Configuré ssmtp para que tenga su propio permisouser
y creowheel
que permitiría que cualquiera lo use (incluido cron). Si ayuda Im en CENTOS 6.2