[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ayuda bash



On Wed, Nov 14, 2018 at 09:17:18AM +0100, miguel angel gonzalez wrote:
>    Hola a todos,
>    Tengo una duda, me han pedido que haga un script relativamente sencillo
>    pero que me tiene atascado.
>    Comprobar que tomcat está arrancado y sino arrancarlo, hasta aquí bien, lo
>    estaba haciendo por procesos.
>    #!/bin/bash
>    RESTART="/etc/init.d/tomcat restart"
>    PGREP="/usr/bin/pgrep"
>    TOMCAT="java"
> 
>    # buscamos que exista el proceso
>    $PGREP ${TOMCAT}
> 
>    # sino existe id de proceso y el comando anterior devuelve 0
> 
>        if [ $? -ne 0 ]
>        then
>      $RESTART
>        fi
>    ---
>    Pues bien, así no quieren que se realice.
>    Sino que compruebe estado es decir, si está arrancado que no haga nada
>    sino que lo arranque. Por el mensaje que devuelve. Lo que llevo hecho es
>    esto, el problema me surge que el estado de tomcat que devuelve el comando
>    status no entra en la variable y sin eso el resto no funciona. Como podéis
>    ver hee intentado varias opciones pero ninguna me funciona, entiendo que
>    la correcta y que debería de funcionar es:  ssh root@$i
>    SALIDA=$(/etc/init.d/Tomcat status)
>    #!/bin/bash
>    START="/etc/init.d/Tomcat start"
>    PARADO="Tomcat Server is not running."
>    #STATUS="Tomcat Server is running"
>    #SALIDA=/etc/init.d/Tomcat status"
>    for i in $(cat /home/usuario/xml.lst)
>    do
>    #            ssh root@$i /etc/init.d/Tomcat status >>
>    SALIDA=$(/home/usuario/prueba_estado_tomcat.txt)
>                    ssh root@$i /etc/init.d/Tomcat status
>                   ssh root@$i SALIDA=$(/etc/init.d/Tomcat status)
>                    echo "$SALIDA"  >> /home/usuario/prueba_estado_tomcat.txt
>    #               if [ "$SALIDA" == "$PARADO" ];
>    #                then echo "está parado" >>
>    /home/usuario/tomcat_parado.txt
>                    #$START
>    #                fi
>    done
>    Por cierto, el servicio de tomcat es con la T mayúscula. De momento hasta
>    que lo tenga terminado, voy por partes y estoy enviando el resultado a un
>    txt. Recorro una lista con las ip´s de las máquinas. Por eso dentro de un
>    for meto el if.
>    ¿Se os ocurre algo? Gracias.

Yo creo qu tal vez sería mejor algo de esta manera:

URL=http://host/algo.html
LOG=$(mktemp)
wget -o ${LOG} -O /dev/null "${URL}"
if [ "$?" != "0" ]; then
        echo "Problema con Tomcat: "
        cat "${LOG}"
        # Posiblemente ingresar al servidor y arrancar Tomcat de nuevo
fi

Si wget retorna con "200 OK" entonces el estatus de salida es 0.  Si
regresa con otra cosa, entonces el estatus de salida es alogo por encima
del 0.

Tambien puedes hacer este chequeo primero y entonces el otro chequeo que
has implementado si wget sale con algo indicando problema.  Así también
puedes diagnosticar si Tomcat está arrancado con todo bien, arracando
con algún problema (el estatus de wget, por ejemplo, te deja distinguir
un error HTTP 500 de un 404), o si no está arrancado y hace falta
arrancarlo de nuevo.

Saludos,

-Roberto

-- 
Roberto C. Sánchez


Reply to: