Script para monitorizar web


Icono de bash script

Este script nos permite monitorizar una web buscando en su código la palabra necesaria para saber que está funcionando bien. No es un gran sistema de monitorización pero sirve para salir del paso.

El script se auto bloquea cuando ya ha enviado el primer email con la alerta, para de esta forma no seguir enviando, y se desbloquea cuando al web vuelve a funcionar normalmente.

Necesita tener instalado curl y se puede utilizar cualquier cliente/servidor de mail para mail que se prefiera. ( exim4, msmtp, ssmtp, postfix,.. )

#!/bin/bash

path=$(dirname $0)"/"$(basename $0)

send_mail=true

email=alerts@ email example.com

url=$1
word=$2

result=$(curl -sL $url | grep "$word" > /dev/null && echo 1 || echo 0)

if [ "$result" != 1 ]; then
        if $send_mail ; then
                echo -e "To: $email\nFrom: alerts@ email example.com\nSubject: Alert! Web $1 down! $(date '+%Y-%m-%d %H:%M:%S')\n\n\nWeb $1 down! Not found word $2!" | /usr/sbin/sendmail "$email"
                sed -i '5s/send_mail\=true/send_mail=false/g' "$path"
        fi
else
        sed -i '5s/send_mail\=false/send_mail=true/g' "$path"
fi

Su ejecución sería la siguiente:

bash /path/to/script.sh "https://test.com" "palabra"

En el segundo parámetro hay que poner las palabras o el trozo de código que se desee buscar. En caso de que el string no se encuentren en el código de la web enviará un correo al correo especificado en el script.

Para utilizarlo de forma regular podemos poner un cron.

* * * * *     root    bash /path/to/script.sh "https:test.com" "palabra"

Se ejecutaría todos los minutos.