Ya es hora de empezar a escribir artículos de Linux y Aix, para ello voy a desarrollar un programa realizado en script para lanzar programas en Java. Los scripts son dos, el primero analiza el servicio MySQL en memoria (Activo) y si el programa a lanzar está ejecutándose en memoria. El segundo script es en sí el programa a ejecutar en Java.
Los dos programas son muy interesantes de analizar, por su sencillez y a la vez la cantidad de controles y acciones a realizar.
A nivel de programación cada uno de nosotros tiene su propio estilo, espero de la benevolencia de los expertos en programación de script con mi forma de pensar y programar en sistemas abiertos.
El primer programa realiza los siguientes controles :
- Usuario para autorización , arranque y envió de e-mail
- Ruta de la aplicación y ruta de los programas
- Crear ficheros de errores y log para envío de información por e mail si existe error
- Función de envió información email
- Controlar si los ficheros no existen crear y dar autorización a dichos ficheros .txt y .log
- Controlar los servicios que utiliza los programa MySQL y están activos
- Controlar si el programa a enviar por basch está en memoria para no ejecutarlo
El primer script analiza los posibles errores y si todo es correcto, ejecutará el segundo script para lanzar el programa realizado en java. Pero vamos por faena y empezamos con el primer script, es muy extenso y técnico pero intentare no ser pesado y a la vez entendible para todos.
#!/bin/sh
##################################################
# Programa : /var/proceso/EnviarPrograma.sh.
# el programa tiene autorización (chmod 750)
# Si indicamos /bin/sh -x vemos las instrucciones debug
# Analiza si existe Activo la Base de Datos MySql en Memoria.
# Si el Gestor esta activo y el programa MqLauncherPrograma.sh no existe en
# memoria , lanza el programa en batch del MqLauncherPrograma.sh
# Dicho programa se ejecuta desde un crontab de Aix, por el Usuario mtproceso
#####################################################
# Funcion control envio leer MqLauncherPrograma.sh
#####################################################
### Variable HOST para coger el nombre del Servidor, esto se realiza por si tenemos varios servidores ejecuntado el script, cuando te llega el mensaje por e.mail tenemos que saber el servidor
## USUARIO. Usuario para dar permiso a los ficheros temporales y Email
## PROCESO. Nombre del Proceso, para indicar el programa que tiene error
## MENSAJE. Indicar el mensaje que llegará en el Asunto del Email
## APLIPATH. Ruta de la Aplicación
## PROGPATH. Ruta de los Programas
## MQERROR. Ruta y Nombre del Fichero de Errores
## MQFICHERO. Ruta y Nombre del Fichero de Log
## PROGMQM. Ruta y Nombre del Programa a lanzar
## PATH. Añadimos todos las rutas al PATH
##################################################
HOST=`uname -n`
USUARIO=»mtproceso»
PROCESO=»Lanzar un Programa Script en Java» # Nombre del Proceso
MENSAJE=»Telepieza : Error Proceso envio Lanzador Programa Java»
APLIPATH=»/var/proceso»
PROGPATH=${APLIPATH}/telepieza
MQERROR=${PROGPATH}/tmp/MqErrorPrograma.txt MQFICHERO=»${PROGPATH}/log/MqLauncherPrograma.log
PROGMQM=${PROGPATH}/MqLauncherPrograma.sh
PATH=$APLIPATH:$PROGPATH:$PATH
export PATH ### Exportamos la ruta PATH
cd $PROGPATH
### Nos posicionamos en la ruta de programas
##########################################
# Funcion Envio de Informacion al usuario por e-mail ####
##########################################
SalirEmail () { # Rutina envio E-Mail
date > $MQERROR # Fecha
echo &HOST >> $MQERROR # Host
echo $MENSAJE >> $MQERROR # Texto Error
echo «Fin Proceso $0 » >> $MQERROR # Programa
cat $MQERROR | mail -s «$PROCESO $HOST » $USUARIO
Salir
}
##################################################
## Subrutina salir del Programa
##################################################
Salir () {
exit
}
####################################################
### Analizar Si existe el Fichero de tmp/MqErrorPrograma.txt
####################################################
if [ ! -f $MQERROR ] # Si no existe Fichero
then
> $MQERROR # Crea Fichero
chmod 666 $MQERROR # Permisos de Grabar/Leer
chgrp mtproceso $MQERROR # Grupo mtproceso
chown mtproceso $MQERROR # Usuario mtproceso
fi
######################################################
#### Analizar Si existe Fichero de log/MqLauncherPrograma.log
######################################################
if [ ! -f $MQFICHERO ] # Si no existe Fichero
then
> $MQFICHERO # Crea Fichero
chmod 666 $MQFICHERO # Permisos de Grabar/Leer
chgrp mtproceso $MQFICHERO # Grupo mtproceso
chown mtproceso $MQFICHERO # Usuario mtproceso
fi
#####################################################
# Analiza el Programa
####################################################
date >> $MQFICHERO # Fecha Arranque
MENSAJE=»Host : $HOST – Inicio Lanzador Programa $0 «
echo $MENSAJE >> $MQFICHERO # Graba Mensaje Inicio
###################################################
# Analiza si esta activado la Base Datos MySql en Memoria con el servicio mysqld
###################################################
LINBD=$(ps -elf | grep -c «[m]ysqld»)
if [ $LINBD -eq 0 ]
then
MENSAJE=»-ERROR – No Activa la Base Datos MySql en Memoria -ERROR-«
echo $MENSAJE >> $MQFICHERO
SalirEmail
fi
###############################################
# Analiza si MqLauncherPrograma.sh esta en Memoria para no lanzarlo
###############################################
LINPH=$(ps -elf | grep -c «[M]qLauncherPrograma»)
if [ $LINPH -eq 0 ]
then
MENSAJE=»Lanza Lanzador Memoria -OK-» # Tipo de Error
echo $MENSAJE >> $MQFICHERO # Graba Mensaje Inicio
$PROGMQM & # Lanza MqLauncherPrograma.sh
else
MENSAJE=»Existe en Memoria $0 – Nº : $LINPH -«
echo $MENSAJE >> $MQFICHERO # Graba Mensaje Inicio
SalirEmail
fi
Salir
Es muy dificil de entender programas realizados por otros, pero el script descrito en el post merece la pena perder un poco de tiempo. El Script es lanzado desde un crontab, a la vez lanza otro script con programas en java y analiza si los servicios necesarios para su ejecución están activos, por último, analiza si el script a lanzar existe en memoria para no enviarlo por batch. Si algo va mal nos envía el programa un mensaje por email, indicando el servidor, programa y motivo del error.
En el próximo Post explicare el segundo script que lanza y ejecuta programas en java, su complejidad está en las rutas ..
Saludos de Telepieza.