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.ksh
y lo estoy ejecutando usando nohup
el 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 -a
opció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.