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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *