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

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

ksh スクリプトが実行されたら、.log ファイルまたは .txt ファイルをメール コマンドに添付してメールを送信しようとしています。 mutt コマンドはマシンにインストールされておらず、インストールすることもできないため、使用できません。 Google でさまざまな方法を試しましたが、うまくいきませんでした。

これが私の要件です。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ジョブが開始、完了していません。cron ジョブの最後にメール コマンドを配置すると、この問題は修正されます。その後、前の手順が完了したときにのみ電子メールが送信されます。

関連情報