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.ksh
e estou executando isso usando nohup
o 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 -a
opçã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.