Por Manolo Gómez | March 30, 2022
Cuando no dedicamos a programar aplicaciones web, es vergonzoso, que te tenga que llamar un cliente para decirte que su aplicación o pagina web no funciona.
Un programa que corren en internet puede dejar de funcionar por muchas razones, se ha caído el servidor, a caducado del certificado, a recibido un ataque… Una buena solución es adelantarnos a esto y generar un sistema que nos avise de los problemas.
Aquí en este post explico el sistema mas sencillo para hacerlo un script en bash de pocas lineas que se ejecuta con un crontab a intervalos regulares de tiempo en mi caso cada 15 min y comprueba que una lista de direcciones web están o no en funcionamiento, en caso de que alguna no responda enviá un mensaje a telegram avisado de esto.
El script yo lo he llamado check_urls.sh
#!/bin/bash
cd "$(dirname "$0")"
file_log="history_check.log"
domains=(
'https://creawww.com/'
'http://www.konstruir.com/'
'https://manolog.es/'
'https://noescorrectoparatenererror.es/'
)
now="`date +%Y%m%d_%H:%M`"
message=""
for url in "${domains[@]}"
do
status_code=$(curl --write-out %{http_code} --silent --output /dev/null $url)
if [ ${status_code} == "200" ]
then
echo "$url OK -> $now"
else
message="$url KO -> $now"
echo $message
echo $message >> $file_log
sh bot_telegram.sh "$message"
fi
done
por comentar las lineas mas significativas:
- “$(dirname “$0”)” de mueve a la carpeta del de script
- domains es un array de dominios a comprobar
- un bucle que recorre el array comprueba con curl si una llamada a la url tiene estado 200 en caso negativo lo anota en un archivo logs y envía un mensaje a Telegram
El envío de mensajes por Telegram se realiza mediante otro archivo ssh situado en la misma carpeta que se explica en un post anterior
Crear un sencillo bot de Telegram para notificar con Bash