成功または失敗時に電子メールを送信するスクリプト

成功または失敗時に電子メールを送信するスクリプト

私の Oracle バックアップは、バックアップが完了したこと、そしてパターンの検出に応じて成功または失敗したことを通知する電子メールを送信します。バックアップ ログは非常に大きくなっており、14 mg です。このファイルは 10 MB より大きいため、このメッセージは Exchange サーバーによってドロップされます。

この問題を解決するのを手伝ってください。つまり、このプロセスでは、パターン「ORA-」または「RMAN-」エラー コード (失敗した場合) を含む電子メール、または成功または失敗を示す電子メールのみを送信する必要があります。

注: これはコードの一部にすぎません。ご質問があればお知らせください。

#### Check for RMAN/ORA Errors and notify accordingly

RMANERROR=`egrep "ORA-|RMAN-" $RMAN_LOG_TSBKUP`
RMANWARN=`egrep "ORA-|RMAN-" $RMAN_LOG_TSBKUP|egrep -vE "$EGREP_EXCLUDE"`


if [ -z "$RMANERROR" ]
then
   echo "No Errors"
   cat $RMAN_LOG_TSBKUP |mailx -s "SUCCESS - DW_TS_BACKUP Complete" `cat $EMAIL_SUCCESS_DIST`
elif [ -z "$RMANWARN" ]
then
   echo "No Errors, but Warnings"
   cat $RMAN_LOG_TSBKUP |mailx -s "SUCCESS (with ignorable WARNINGS) - DW_TS_BACKUP Complete" `cat $EMAIL_SUCCESS_DIST`
else
   echo "Errors Found !!!!"
   mailx -s "FAILURE - DW_TS_BACKUP Complete" `cat $EMAIL_FAIL_DIST`
fi
}

答え1

2つの選択肢があります:

cat1 -ログ ファイル全体を電子メールに含める代わりに、tail -n x $RMAN_LOG_TSBKUPの代わりにを使用することで、新しく追加さcat $RMAN_LOG_TSBKUPれた行のみを含めることができます。ここで、x は電子メールに含めるファイルの末尾からの行数です。バックアップによってログに追加される行数が大まかにわかっている場合は、x を調整して古いログ データが含まれないようにすることができます。または、grepログ ヘッダーまたは日付に対して を使用することもできます。これは任意です。

2 - ログのバージョン管理を で実装しますlogrotate。基本的な設定ファイルを作成して にドロップすると/etc/logrotate.d/logrotateがすべてを処理します。スケジュールまたはサイズに基づいてログをローテーションするように設定できます。 logrotateは通常、 から毎日の cronjob として実行されます/etc/cron.daily/logrotate。ログを管理しやすい方法で保存できるため、これがおそらく最適なオプションです。基本的な設定には、以下のディレクティブを含めることができます。

 /var/log/oracle-backup.log {
  size 1M
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

指示はわかりやすいですが、man logrotate良い情報があり、ここに良いリンクがあります。Ubuntu 12.10 で Logrotate を使用してログ ファイルを管理する方法

関連情報