#!/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:
0-59 * * * * root sh /ruta-a-fichero/chequeo.sh
Hola, me agrada lo que intentas hacer pero no mucho la manera.... si me permites, quiero poner mi alternativa
#!/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