用于发送成功或失败电子邮件的脚本

用于发送成功或失败电子邮件的脚本

我的 Oracle 备份会发送一封电子邮件,通知备份已完成,成功或失败取决于它发现的某种模式。我们的备份日志变得非常大 - 14mg。由于该文件大于 10MB,因此 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

我看到两个选项:

1 - 您可以仅包含新附加的行,而不是cat将整个日志文件添加到电子邮件中,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 管理日志文件

相关内容