script para enviar e-mail para sucesso ou falha

1

Meu backup do Oracle envia um e-mail com a notificação de que o backup foi concluído e foi bem-sucedido ou não, dependendo de algum padrão. Nossos logs de backup estão ficando muito grandes - 14mg. Como esse arquivo é maior que 10 MB, essas mensagens estão sendo descartadas pelos servidores Exchange.

Por favor ajude-me a corrigir este problema, ou seja, eu preciso deste processo para apenas enviar um e-mail com os códigos de erro padrão "ORA-" ou "RMAN-" (se falhar) ou apenas um e-mail que indique sucesso ou falha.

NOTA: isto é apenas uma parte do código - Deixe-me saber se você tem alguma dúvida.

#### 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
}
    
por Ram 13.06.2014 / 17:04

1 resposta

1

vejo duas opções:

1 - Em vez de cat ing o arquivo de log inteiro no email, você pode incluir apenas as linhas adicionadas recentemente usando tail -n x $RMAN_LOG_TSBKUP em vez de cat $RMAN_LOG_TSBKUP , em que x é o número de linhas do final do arquivo a ser incluído no email. Se você souber aproximadamente quantas linhas o backup adicionará ao log, poderá refinar x e evitar incluir dados de log antigos. Ou você pode grep para um cabeçalho de log ou data, depende de você.

2 - Implemente o controle de versão de log com logrotate . Crie um arquivo de configuração básico e solte-o em /etc/logrotate.d/ e logrotate cuidará de tudo para você. Você pode configurar os logs para serem rotacionados com base em uma programação ou por tamanho. O logrotate normalmente é executado como um cronjob diário de /etc/cron.daily/logrotate . Esta é provavelmente a melhor opção, pois permitirá que você salve logs de uma maneira gerenciável. Uma configuração básica pode incluir as diretivas abaixo.

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

As diretivas são bastante autoexplicativas, mas man logrotate tem boas informações e aqui está um bom link Como gerenciar arquivos de log com o Logrotate no Ubuntu 12.10

    
por 13.06.2014 / 17:44