Cuerpo del mensaje nulo; espero que esté bien

Cuerpo del mensaje nulo; espero que esté bien

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.outarchivo, tiene contenido.

El script /dproxy/scripts/cleanSDP2xLogs.shenví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 mailcomando 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 maillee del archivo.en paralelo- y mailtermina 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.shdel mailcomando, lo cual no creo que sea lo que quieres decir. Parece que primero desea ejecutar cleanSDP2xLogs.shpara 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 -acomo archivo adjunto:

/dproxy/scripts/cleanSDP2xLogs.sh
mail -s 'SDP2.X Prod LogArchiving Report' -a /tmp/sdplogs.out [email protected] << ""

información relacionada