Tengo el siguiente comando a continuación como parte de un cronjob. Cuando ejecuto el comando mediante cron o en la línea de comando, aparece Null message body; hope that's ok
.
El contenido del correo electrónico está vacío, pero cuando reviso el /tmp/sdplogs.out
archivo, tiene contenido.
El script /dproxy/scripts/cleanSDP2xLogs.sh
envía la salida al archivo /tmp/sdplogs.out
.
¿Qué estoy haciendo mal? Cualquier ayuda sería muy apreciada.
$ /dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
Null message body; hope that's ok
Respuesta1
Debe reemplazar |
with &&
o dejar que el script genere los datos en stdout y use |
.
Al usar &&
, el mail
comando solo se ejecutará cuando el script salga con 0.
Cuando se utiliza el carácter de tubería, su secuencia de comandos debe enviar los datos a la salida estándar para que la tubería pueda pasarlos a mail
.
En lo que escribió, el script escribe datos en el archivo y mail
lee del archivo.en paralelo- y mail
termina leyendo el archivo antes de que el script haya escrito algo en él.
Respuesta2
/dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
Estás canalizando la salida cleanSDP2xLogs.sh
del mail
comando, lo cual no creo que sea lo que quieres decir. Parece que primero desea ejecutar cleanSDP2xLogs.sh
para generar /tmp/sdplogs.out y luego introducir /tmp/sdplogs.out en el comando de correo.
Si ese es el caso, simplemente reemplácelo |
con ;
y debería estar bien:
/dproxy/scripts/cleanSDP2xLogs.sh; mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
Respuesta3
Otra forma de hacer este uso -a
como archivo adjunto:
/dproxy/scripts/cleanSDP2xLogs.sh
mail -s 'SDP2.X Prod LogArchiving Report' -a /tmp/sdplogs.out [email protected] << ""