script para enviar correos electrónicos en caso de éxito o fracaso

script para enviar correos electrónicos en caso de éxito o fracaso

Mi copia de seguridad de Oracle envía un correo electrónico con una notificación de que la copia de seguridad se completó y fue exitosa o falló dependiendo de que encuentre algún patrón. Nuestros registros de respaldo se están volviendo muy grandes: 14 mg. Dado que este archivo pesa más de 10 MB, los servidores de Exchange descartan estos mensajes.

Ayúdenme a solucionar este problema, es decir, necesito que este proceso simplemente envíe un correo electrónico con el patrón de códigos de error "ORA-" o "RMAN-" (si falla) o simplemente un correo electrónico que indique éxito o fracaso.

NOTA: esto es sólo una parte del código. Avíseme si tiene alguna pregunta.

#### 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
}

Respuesta1

Veo 2 opciones:

1: en lugar de catincluir todo el archivo de registro en el correo electrónico, puede incluir solo las líneas recién agregadas usando tail -n x $RMAN_LOG_TSBKUPen lugar de cat $RMAN_LOG_TSBKUPdonde x es el número de líneas desde el final del archivo para incluir en el correo electrónico. Si sabe aproximadamente cuántas líneas agregará la copia de seguridad al registro, puede refinar x y evitar incluir datos de registro antiguos. O puede hacerlo greppara obtener un encabezado de registro o una fecha, depende de usted.

2 - Implementar el control de versiones de registros con logrotate. Cree un archivo de configuración básico, colóquelo /etc/logrotate.d/y logrotatese encargará de todo por usted. Puede configurar los registros para que se roten según una programación o por tamaño. logrotateNormalmente se ejecuta como un cronjob diario desde /etc/cron.daily/logrotate. Esta es probablemente la mejor opción, ya que le permitirá guardar registros de forma manejable. Una configuración básica podría incluir las siguientes directivas.

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

Las directivas se explican por sí mismas pero man logrotatetienen buena información y aquí hay un buen enlace.Cómo administrar archivos de registro con Logrotate en Ubuntu 12.10

información relacionada