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