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).-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#!/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 |