.txtファイルまたは.logファイルをメールおよびmailxコマンドに添付することはできません。

.txtファイルまたは.logファイルをメールおよびmailxコマンドに添付することはできません。

kshスクリプトを実行した後、電子メールを送信するためにmailコマンドに.logファイルまたは.txtファイルを添付しようとしています。 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

絶望的に過去1000年に閉じ込められ、正しい添付ファイルを処理できるソフトウェアがない場合は、uuencodeデータを本文に追加するだけです。

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

しかし、基本的なアプローチには競争条件があります。出力ファイルが存在する場合、cron ジョブが完了したことを示します。スタート、まだ終わっていない。 cronジョブの最後にmailコマンドを配置すると、この問題は解決され、前の手順が完了するまでEメールは送信されません。

関連情報