скрипт для отправки электронного письма об успехе или неудаче

скрипт для отправки электронного письма об успехе или неудаче

Мой Oracle backup отправляет электронное письмо с уведомлением о том, что резервное копирование завершено, и оно было успешным или неудачным в зависимости от того, нашла ли она какую-то закономерность. Наши журналы резервного копирования становятся очень большими - 14 мг. Поскольку этот файл больше 10 МБ, эти сообщения отбрасываются серверами 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 варианта:

1 - Вместо того, catчтобы ing весь файл журнала в письмо, вы можете включить только новые добавленные строки, используя tail -n x $RMAN_LOG_TSBKUPвместо , cat $RMAN_LOG_TSBKUPгде x - это количество строк с конца файла, которые нужно включить в письмо. Если вы примерно знаете, сколько строк резервная копия добавит в журнал, то вы можете уточнить x и не включать старые данные журнала. Или вы можете grepиспользовать заголовок журнала или дату, это на ваше усмотрение.

2 - Реализуйте управление версиями журналов с помощью logrotate. Создайте базовый файл конфигурации и добавьте его, /etc/logrotate.d/и он logrotateобо всем позаботится за вас. Вы можете настроить ротацию журналов по расписанию или по размеру. logrotateобычно запускается как ежедневное задание cron из /etc/cron.daily/logrotate. Это, вероятно, лучший вариант, поскольку он позволит вам сохранять журналы управляемым способом. Базовая конфигурация может включать директивы ниже.

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

Директивы довольно понятны, но man logrotateсодержат полезную информацию, и вот хорошая ссылкаКак управлять файлами журналов с помощью Logrotate в Ubuntu 12.10

Связанный контент