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