sSMTP. Segunda parte

Hola de nuevo, Hoy nos gustaría seguir revisando la utilización de esta útil herramienta y como se puede integrar con scripts complejos que nos permita estar informados sobre el estado de las ejecuciones de los mismos. En ambos casos se utiliza para monitorizar scripts de backup de Oracle pero con dos ejemplos distintos. En el primer caso vamos a revisar la salida de un export y dependiendo de la salida mandaremos el mensaje de finalización correcta o errónea.  

ORACLE_HOME=/opt/oracle/12.1/database export ORACLE_HOME

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:. export PATH

export ORACLE_SID=TEST1 export ORACLE_SID

PATH=$PATH:/usr/sbin export PATH FICHERO=/mnt/backup/exp_full_TEST_`date +”%Y%m%d”`

#run export full exp \’sys/test123 as sysdba\’ file=$FICHERO.dmp log=$FICHERO.log full=y statistics=none consistent=yes

NUMROWS=`cat $FICHERO.log | grep “Export terminated successfully” | wc -l` LOG=`cat $FICHERO.log`

if [ $NUMROWS -gt 0 ] then echo “Backup correcto” else echo “Backup incorrecto” ssmtp cuenta1@gpsos.es cuenta2@gpsos.es <<EOF From: avisos@gpsos.es Subject: Export full con errores!!!

$FICHERO $LOG EOF

fi

En el script hacemos un export full y dejamos el log del mismo en una ruta distinta. Para comprobar si el export está correcto contamos el numero de veces que aparece “Export terminated successfully” en el fichero de log. Este valor se guarda en NUMROWS y posteriomente en el if vemos el resultado del mismo. Se manda correo en el caso de error, pero se puede incluir también cuando es correcto si queremos estar informado del resultado del mismo. También mandamos el log completo para su revisión, lo almacenamos en la variable LOG=`cat $FICHERO.log` y luego se manda en el correo. Para revisar el resultado de un comando de rman en lugar de revisar el log, miramos el estado de salida del comando. Un ejemplo del mismo es el siguiente:

#!/bin/bash

#set variables NOW=$(date +”%Y%m%d”) TOMORROW=$(date –date=”+1 day” +”%Y%m%d”)

# User specific environment and startup programs

ORACLE_HOME=/opt/oracle/12.1/database export ORACLE_HOME

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:. export PATH

export ORACLE_SID=TEST1 export NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252

PATH=$PATH:/usr/sbin export PATH FICHERO=/mnt/backup/rman_arch_TEST_`date +”%Y%m%d”`

mkdir /mnt/backup/$NOW 2>/dev/null mkdir /mnt/backup/$TOMORROW 2>/dev/null rman target / catalog rman/rmantest1@rman @$HOME/scripts/backup/backup_arch.rman log $FICHERO.log OUT=$?

LOG=`cat $FICHERO.log`

if [ $OUT -eq 0 ];then echo “Backup correcto” else echo “Backup incorrecto” ssmtp cuenta1@gpsos.es cuenta2@gpsos.es <<EOF From: avisos@gpsos.es Subject: RMAN arch con errores!!!

$FICHERO $LOG EOF fi

En este caso capturamos la salida con OUT=$?. En el if comprobamos si es 0 (correcto) o hay errores. Dependiendo de la salida mandamos correo o no. Espero que os sea de utilidad y nos vemos en siguientes artículos. Un saludo. Equipo Linux.