script para enviar e-mail em caso de sucesso ou fracasso

script para enviar e-mail em caso de sucesso ou fracasso

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

Por favor me ajude a corrigir esse problema, ou seja, preciso que esse processo envie apenas um e-mail com os códigos de erro padrão "ORA-" ou "RMAN-" (em caso de falha) ou apenas um e-mail indicando sucesso ou falha.

NOTA: esta é apenas uma parte do código - entre em contato se tiver 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
}

Responder1

Vejo 2 opções:

1 - Em vez de catenviar todo o arquivo de log no e-mail, você pode incluir apenas as linhas recém-anexadas usando tail -n x $RMAN_LOG_TSBKUPem vez de cat $RMAN_LOG_TSBKUPonde x é o número de linhas do final do arquivo a serem incluídas no e-mail. Se você souber aproximadamente quantas linhas o backup adicionará ao log, poderá refinar x e evitar a inclusão de dados de log antigos. Ou você pode grepobter um cabeçalho ou data de log, depende de você.

2 - Implemente o versionamento de log com logrotate. Crie um arquivo de configuração básico, coloque-o /etc/logrotate.d/e logrotatecuidará de tudo para você. Você pode configurar a rotação dos logs com base em uma programação ou por tamanho. logrotatenormalmente é executado como um cronjob diário de /etc/cron.daily/logrotate. Esta é provavelmente a melhor opção, pois permitirá salvar logs de uma forma 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 logrotatecontêm boas informações e aqui está um bom linkComo gerenciar arquivos de log com Logrotate no Ubuntu 12.10

informação relacionada