BASH – Script ejecuta comandos remotos mediante TELNET (Verifica procesos DEFUNC).-

Lo que realiza este SCRIPT es verificar los procesos DEFUNC en un servidor y si sobrepasa un UMBRAL pedeterminado (300 para este caso) procede a reiniciar el WEBSERVER. Existen diferentes validaciones muy interesantes en este script : como quitar los controles de fin de linea (CTRL M), generados en el archivo de salida del telnet, quitar los espacios en blanco al principio y al final de la variable y tambien validar que la variable capturada, corresponda a un número; de no ser asi finaliza el programa. También se genera un log con los reinicios.-
El Script puede lanzarse desde una tarea programada (CRONTAB).-

#!/bin/bash
logs="/usr01/home/trabajo/logs/$SERVIDOR_defunc.txt"
salida="/usr01/home/trabajo/logs/salida.txt"
salida2="/usr01/home/trabajo/logs/salida2.txt"
# Para validar que una variable solo contenga numeros
numero='^[0-9]+$'
SERVIDOR=kriptonita
USUARIO=usuario
PASSWORD=password
UMBRAL=300
(sleep 1;echo $USUARIO; sleep 2; echo $PASSWORD; sleep 3; echo "ps -fea | grep defunc | grep -v grep | wc -l"; sleep 3; echo "exit" ) | teln
et $SERVIDOR > $salida 2> /dev/null
# El siguiente comando quita los CTRL M de fin de linea del archivo
sed 's/^M//' $salida > $salida2
# Toma solo la ultima linea del archivo generado
num=`tail -1 $salida2`
# Quita los espacios en blanco al principio de la variable
num="${num#"${num%%[![:space:]]*}"}"
# Quita los espacios en blanco al final de la variable
num="${num%"${num##*[![:space:]]}"}"
# Valida que la variable sea un numero, si no lo es finaliza el programa
if [[ $num =~ $numero ]];then
                 echo "" > /dev/null
        else
                exit
fi
# Si existen mas de xx procesos DEFUNC, procede a reiniciar el servicio
# Y guarda la informacion en un LOG
if [ ${num} -gt $UMBRAL ]
   then
        echo "$SERVIDOR `date +%d%m%Y` `date +%H:%M:%S` tiene $num procesos DEFUNC" >> $logs
        (sleep 1;echo $USUARIO; sleep 2; echo $PASSWORD; sleep 3; echo "sh reinicia_webserv.sh"; sleep 4; echo "exit") | telnet $SER
VIDOR > $salida 2> /dev/null
fi
exit
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

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