No se puede adjuntar un archivo .txt o un archivo .log al correo y al comando mailx

No se puede adjuntar un archivo .txt o un archivo .log al correo y al comando mailx

Estoy intentando adjuntar un archivo .log o .txt al comando de correo para enviar un correo electrónico una vez que se ejecutó mi script ksh. No puedo usar el comando mutt porque no está instalado en mi máquina y se supone que no debo instalarlo. He probado muchas formas buscando en Google y no me ha ayudado a tener éxito.

Este es mi requisito: necesito ejecutar unas 10 consultas SQL y el resultado debo enviar el correo electrónico mediante un archivo adjunto. Lo tengo Check.kshy lo estoy ejecutando usando nohupel comando.

nohup Check.ksh > Valid_Check.log 2>&1 &

En cheque.ksh

typeset var TO="[email protected]";
typeset var SUB="Report";
typeset var BODY="Check Completed";
typeset var ATTACHMENT=${FILE_PATH}/Valid_Check.log

if [ -f "${ATTACHMENT}" ]; then 
echo "Log file exist";
else
echo "No Log File";
fi

uuencode Valid_Check.log Valid_Check.log | mail -s "${SUB}" "${BODY}" ${TO}

y probé lo siguiente también

#mailx -s "${SUB}" "${TO}" "${BODY}" < ${FILE_PATH}/Valid_Check.log

#cat ${FILE_PATH}/Valid_Check.log | mailx -s "${SUBJECT}" "${TO}" "${BODY}";

El código anterior arroja un error como "Válido... Usuario desconocido"

¿Alguna aportación sería útil o algún otro enfoque simple/fácil?

Gracias,

Respuesta1

Si tiene un archivo lo suficientemente reciente mailx, use la -aopción para agregar un archivo adjunto.

mailx -s "$SUB" -a "Valid_Check.log" "$TO" <<<"$BODY"

Ver tambiénhttps://access.redhat.com/solutions/104833

Si está irremediablemente atrapado en un milenio anterior y no tiene ningún software que pueda manejar archivos adjuntos adecuados, los datos de uuencode simplemente deben agregarse al cuerpo.

( echo "$BODY"; echo; uuencode Valid_check.log Valid_check.log ) |
mailx -s "$SUB" "$TO"

Sin embargo, el enfoque básico sufre de una condición de carrera: la existencia del archivo de salida indica que el trabajo cron tienecomenzó,sin terminar. Poner el comando de correo al final del trabajo cron solucionaría este problema; entonces, el correo electrónico sólo se enviará cuando finalice el paso anterior.

información relacionada