Я пытаюсь прикрепить файл .log или .txt к команде mail, чтобы отправить электронное письмо, как только мой сценарий ksh выполнен. Я не могу использовать команду mutt, поскольку она не установлена на моем компьютере, и я не должен ее устанавливать. Я пробовал много способов с помощью поиска в Google, но это не помогло мне добиться успеха.
Вот мое требование: мне нужно выполнить около 10 SQL-запросов, а результат нужно отправить по электронной почте во вложении. У меня есть Check.ksh
, и я запускаю его с помощью команды nohup
.
nohup Check.ksh > Valid_Check.log 2>&1 &
В Check.ksh
typeset var TO="name@domain.com";
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}";
Приведенный выше код выдает ошибку типа «Действителен ... Пользователь неизвестен»
Любые вводные данные могут быть полезны или любой другой простой / легкий подход?
Спасибо,
Если у вас достаточно недавний 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, чтобы исправить это; тогда электронное письмо будет отправлено только после завершения предыдущего шага.