无法将 .txt 文件或 .log 文件附加到邮件和 mailx 命令

无法将 .txt 文件或 .log 文件附加到邮件和 mailx 命令

我正在尝试将 .log 文件或 .txt 文件附加到 mail 命令,以便在执行 ksh 脚本后发送电子邮件。我无法使用 mutt 命令,因为它尚未安装在我的机器上,而且我不应该安装它。我通过谷歌搜索尝试了很多方法,但这并没有帮助我成功。

这是我的要求,我需要运行大约 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 作业的末尾可以解决这个问题;然后,只有在上一步完成后才会发送电子邮件。

相关内容