Uno de muchos:
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
Aquí hay una manera de hacerlo usando wget en lugar de curl. Tenga en cuenta que MacOS no viene con wget de forma predeterminada.
Una solicitud web exitosa devolverá un código de 200, una falla devolverá un 300, 400, 404, ect... (ver códigos API REST)
Esta línea devolverá un 1
si la solicitud web fue exitosa, de lo contrario devolverá 0
wget -q -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1
El complemento check_http de Nagios puede hacer esto y mucho más, incluida la verificación de texto específico en la respuesta. Puede ejecutarlo desde un script de shell independientemente del propio Nagios:
$ 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