Uno dei tanti:
if curl -s --head --request GET https://example.com | grep "200 OK" > /dev/null; then
echo "mysite.com is UP"
else
echo "mysite.com is DOWN"
fi
Ecco un modo per farlo usando wget invece di curl. Tieni presente che MacOS non viene fornito con wget per impostazione predefinita.
Una richiesta web andata a buon fine restituirà un codice 200, un errore restituirà un codice 300, 400, 404, ecc... (vedi codici API REST)
Questa riga restituirà un 1
se la richiesta web ha avuto successo, altrimenti restituirà 0
wget -q -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1
Il plugin check_http di Nagios può fare questo e molto altro, incluso il controllo di un testo specifico nella risposta. Puoi eseguirlo da uno script di shell indipendentemente da Nagios stesso:
$ check_http --ssl -H www.google.com -r 'Feeling Lucky'
HTTP OK: HTTP/1.1 200 OK - 11900 bytes in 0.086 second response time |time=0.085943s;;;0.000000 size=11900B;;;0
$ echo $?
0