Monitorizar servidor web: Disponible/Caido

Iniciado por Kodeinfect, Febrero 24, 2013, 11:14:33 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 24, 2013, 11:14:33 AM Ultima modificación: Octubre 26, 2013, 11:51:11 AM por Expermicid
Código: bash
#!/bin/bash
url="aqui­_tu_url";
response=$(curl -s -I -L $url | grep HTTP);

status=${response#* };
status=${status:0:3};

if [ "$status" != "200" ]
then
    // acciones a efectuar
fi


Necesitaremos tener instalado curl nada mas, dentro de URL ponemos el servidor (propio o externo que queramos monitorear.
En acciones a efectuar podríamos enviaros un correo, forzar un reinicio del servicio (service apache2 restart o service varnish restart).
Ejecutar otro script, en fin..

Esto es interesante, pero mucho más si lo metemos en el /etc/crontab como superusuarios e insertamos una línea más:
Código: php
0-59 * * * * root sh /ruta-a-fichero/chequeo.sh

Marzo 09, 2013, 05:58:25 PM #1 Ultima modificación: Marzo 09, 2013, 06:00:20 PM por neobits
Hola, me agrada lo que intentas hacer pero no mucho la manera.... si me permites, quiero poner mi alternativa

Código: bash
#!/bin/bash
url="underc0de.org"
response=$(HEAD $url | egrep -m 1 [0-9]{3} -o)

if [ $response -eq "200" ];then
    echo "UP $url"
else
    echo "DOWN $url"
fi


Por que use HEAD $url | egrep -m 1 [0-9]{3} -o en ves de tu curl -s -I -L $url | grep HTTP mas tu substring...

curl -s -I -L

-s > silencia el output de la transferencia, debido a que estas haciendo un grep no importa, por lo que esa opcion puede evitarse
-I > muestra las cabeceras de respuesta...HEAD hace eso unicamente por defecto  8)
-L > sigue una redireccion si es que existe... HEAD lo hace por defecto...

Como ves, HEAD hace todo eso por defecto en un solo comando....Y fijate que a mi si me piden  una herramienta imprescindible es curl...

Ahora solo eso es en la peticion..Despues haces tu extracción de cadena...(Que a mi no me funciono tu code)

En todo caso prefiero hacer uso de "egrep -m 1 [0-9]{3}" que los substrings...Es mas rapido y facil

Y con egrep solo

[0-9] > busco un numero
{3} > de longitud 3
-m 1 > y termino  de buscar en la primera coincidencia...Y como HEAD pone el StatusCode en la primera linea por eso lo termino ahí
-o > muestra solo la coincidencia

Y en mi caso en el if tengo que cambiar de "==" a "-eq"

Puesto que == es para comparación de cadenas y aqui agarrara el StatusCode como numero y por ello el "-eq"

Nota: es HEAD con mayusculas, ya que head en minusculas es el programa para mostrar lineas del principio al fin.

Saludos  ;D

muy interesante kode tu idea.

y muy interesante también lo que dice neobits.

saludos! +k para ambos