성공 또는 실패에 대한 이메일을 보내는 스크립트

성공 또는 실패에 대한 이메일을 보내는 스크립트

내 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

두 가지 옵션이 있습니다.

cat1 - 전체 로그 파일을 이메일로 보내는 대신 x는 이메일에 포함할 파일 끝의 줄 수인 tail -n x $RMAN_LOG_TSBKUP대신 를 사용하여 새로 추가된 줄만 포함할 수 있습니다. cat $RMAN_LOG_TSBKUP백업이 로그에 추가할 줄 수를 대략적으로 알고 있다면 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를 사용하여 로그 파일을 관리하는 방법

관련 정보