Uno script Bash per verificare se un sito è online o meno

A volte chi offre l’hosting per un sito non mette a disposizione anche un sistema di monitoraggio per verificare che quel sito sia effettivamente online.
Il rischio è quello di ritrovarsi con il sito giù e non saperlo.

In questi casi può essere utile utilizzare uno script Bash che, da un’altra macchina, faccia una richiesta al sito in questione e ne verifichi la risposta HTTP.

L’altro giorno mi sono trovato in questa situazione e ho creato uno script, abbastanza rozzo per la verità, ma efficace.

In sostanza, usando cUrl, verifico che il sito risponda con un codice 200, che significa sostanzialmente che è correttamente online.

curl -s --head  --request GET $url | grep "HTTP/2 200" > /dev/null;

In caso contrario, viene mandata una email di notifica.

Ogni interrogazione, sia con esito positivo, sia con esito negativo, viene aggiunta a un log testuale. Easy.

A questo comportamento minimo di base ho aggiunto poi un ulteriore funzionalità: sfruttando l’autenticazione SSH con chiave pubblica (qui info su come fare login SSH senza password), lo script si collega alla macchina che ospita il sito e tenta un restart di Apache (qui info su come lanciare un comando da remoto), aspetta un periodo di tempo e rilancia il check.

Ovviamente per essere funzionale questo script deve essere aggiunto come cron job al crontab della macchina remota.
Qui un tutorial su Crontab: Setting Up Cron Job Using crontab
Io ho impostato un check ogni 5 minuti. Chi non è pratico con i cron jobs può aiutarsi con CronTab Guru.

Sicuramente lo script è migliorabile ma ho potuto verificare sul campo la sua efficacia.

Lo script è disponibile su Gist: visualizza lo script per monitorare se il tuo sito è online da un altro server

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *