Não é possível anexar um arquivo .txt ou .log ao mail e ao comando mailx

Não é possível anexar um arquivo .txt ou .log ao mail e ao comando mailx

Estou tentando anexar um arquivo .log ou .txt ao comando mail para enviar um email assim que meu script ksh for executado. Não consigo usar o comando mutt porque ele não foi instalado em minha máquina e não devo instalá-lo. Eu tentei muitas maneiras pesquisando no Google, o que não me ajudou a ter sucesso.

Aqui está o meu requisito, preciso executar cerca de 10 consultas sql e o resultado precisa ser enviado por e-mail via anexo. Eu tenho Check.kshe estou executando isso usando nohupo comando.

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

Em 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}

e tentei o abaixo também

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

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

O código acima gera um erro como "Válido... Usuário desconhecido"

Alguma contribuição seria útil ou qualquer outra abordagem simples/fácil?

Obrigado,

Responder1

Se você tiver um arquivo . recente o suficiente mailx, use a -aopção de adicionar um anexo.

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

Veja tambémhttps://access.redhat.com/solutions/104833

Se você está irremediavelmente preso em um milênio anterior e não possui nenhum software que possa lidar com anexos adequados, os dados do uuencode devem simplesmente ser anexados ao corpo.

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

A abordagem básica sofre de uma condição de corrida - a existência do arquivo de saída indica que o cron job foiiniciado,não finalizado. Colocar o comando mail no final do cron resolveria isso; então, o e-mail só será enviado quando a etapa anterior for concluída.

informação relacionada