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.