無法將 .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 作業的最後可以解決這個問題;然後,只有在上一步完成後才會發送電子郵件。

相關內容