Невозможно прикрепить файл .txt или файл .log к команде mail и mailx

Невозможно прикрепить файл .txt или файл .log к команде mail и mailx

Я пытаюсь прикрепить файл .log или .txt к команде mail, чтобы отправить электронное письмо после выполнения моего скрипта ksh. Я не могу использовать команду mutt, так как она не установлена ​​на моей машине, и я не должен ее устанавливать. Я пробовал много способов с помощью Google, которые не помогли мне добиться успеха.

Вот мое требование, мне нужно запустить около 10 SQL-запросов и результат нужно отправить по электронной почте через вложение. У меня есть, Check.kshи я запускаю это с помощью nohupкоманды.

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

В Check.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}

и попробовал также ниже

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

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

Приведенный выше код выдает ошибку типа «Верно... Пользователь неизвестен»

Какие-либо предложения или другие простые/легкие подходы будут полезны?

Спасибо,

решение1

Если у вас достаточно свежий mailx, воспользуйтесь -aвозможностью добавить вложение.

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

Смотрите такжеhttps://access.redhat.com/solutions/104833

Если вы безнадежно застряли в предыдущем тысячелетии и у вас нет программного обеспечения, способного обрабатывать правильные вложения, данные uuencode следует просто добавить к телу.

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

Однако базовый подход страдает от состояния гонки — существование выходного файла указывает на то, что задание cronначал,не завершено. Помещение команды mail в конец задания cron исправит это; тогда электронное письмо будет отправлено только после завершения предыдущего шага.

Связанный контент