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メールは送信されません。