jueves, 11 de octubre de 2012

Script bash query oracle send mail

Hola a mis apreciados lectores, en el día de hoy tenemos otras de las travesuras que hemos realizado en el día a día de nuestro ambiente laboral, gracias al compañero Hader por el suministro del insumo para poder publicarlo en este blog. creo que el script está bien explicado "comentarios en ingles" pero de todas maneras voy a darles una introduccion.

primero se establecen las variables de entorno porque el usuario que ejecuta el el bash "un crontab" no conoce donde ubicar los ejecutables de oracle "sqlplus" no sabe el SID de la base de datos y pues todo eso es necesario para poder ejecutar el comando, se hace enfasis en realizar el cambio al directorio de instalación de su propia BDO y de su SID oracle para que funcione adecuadamente. por otro lado se creó un directorio de LOG para poder almacenar los mismos y verificar en que punto está fallando el script "Hader es un maestro en esto de los log". se usa el comando "spool" para guardar el log del resultado de la consulta de oracle y por ultimo se envia el email

#!/bin/bash
# author hceron
# 11 Octubre 2012
# Description - Script para obtener el reporte diario para Movistar

# Environment Variables
export ORACLE_SID=habitat
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_BASE=/u01/app/oracle
PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin

# Directorys
LogDirectory='/home/oracle/scripts/reports/habitat/logs'
DataDirectory='/home/oracle/scripts/reports/habitat/data'

# DataBase Parameters
DBUSER='HABITAT_MOBILE'
DBUSERPASSWORD='HABITAT_MOBILE'
DB='habitat'

# Email Parameters
EMAILMESSAGE="/home/oracle/scripts/reports/habitat/data/emailmessage.txt"
SUBJECT="Reporte"
CLIENTUSERNAME="CTest1"

# Query to get Email of the Client
EMAIL=`sqlplus -s <"${DBUSER}/${DBUSERPASSWORD}@${DB}"
set linesize 32767
set feedback off
set heading off
set verify off
spool '/home/oracle/scripts/reports/habitat/logs/sql.log'
select EMAIL from CLIENT where USER_NAME = '${CLIENTUSERNAME}';
spool off
exit
EOF`

# Send email using /bin/mail
/bin/mail -s $SUBJECT $EMAIL < $EMAILMESSAGE
echo "Email enviado a ${EMAIL} satisfactoriamente"

No hay comentarios:

Publicar un comentario

Agradezco el interes en el tema, estaré atento para poder leer su comentario.