Discussion:
ayuda bash
miguel angel gonzalez
2018-11-14 08:17:18 UTC
Permalink
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.
--
/m.a.
OddieX
2018-11-14 08:22:35 UTC
Permalink
El mié., 14 de nov. de 2018 05:17, miguel angel gonzalez <
Post by miguel angel gonzalez
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
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
SALIDA=$(/home/usuario/prueba_estado_tomcat.txt)
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.
--
/m.a.
Humm chequeando el sock no seria mejor? Y para reforzar con un curl para
verificar que el puerto web responda...

Fijate si asi te va mejor que utilizando el script de start/stop
miguel angel gonzalez
2018-11-14 08:28:34 UTC
Permalink
Uff me pierdo un poco en este punto. ¿Me puedes dar alguna pista más y ya
tiro del hilo? Muchas gracias!
Post by OddieX
El mié., 14 de nov. de 2018 05:17, miguel angel gonzalez <
Post by miguel angel gonzalez
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
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
SALIDA=$(/home/usuario/prueba_estado_tomcat.txt)
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.
--
/m.a.
Humm chequeando el sock no seria mejor? Y para reforzar con un curl para
verificar que el puerto web responda...
Fijate si asi te va mejor que utilizando el script de start/stop
--
/m.a.
Roberto C. Sánchez
2018-11-14 13:08:35 UTC
Permalink
Post by miguel angel gonzalez
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
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
SALIDA=$(/home/usuario/prueba_estado_tomcat.txt)
                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
Loading...