33 lines
853 B
Bash
Executable File
33 lines
853 B
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# I am a script, intended to run from `cron`, which pings a
|
|
# configurable URL, and if no suitable response is forthcoming,
|
|
# performs a configurable command.
|
|
#
|
|
# For example, to monitor racket-pkg-website, try
|
|
#
|
|
# ./ping-service.sh https://localhost:8444/ping $HOME/racket-pkg-website/on-ping-service-failure.sh
|
|
|
|
if [ "$#" != "2" ]
|
|
then
|
|
echo 'Usage: ping-service.sh <url> <command>'
|
|
echo 'Note that <command> has to be a single string.'
|
|
exit 1
|
|
fi
|
|
|
|
url="$1"
|
|
failurecommand="$2"
|
|
|
|
# curl flags:
|
|
# -f == fail, interrogate the HTTP response status code
|
|
# -s == silent, don't print a progress meter or any other cruft
|
|
# -k == Ignore certificates, where url is an HTTPS URL
|
|
#
|
|
if curl -f -s -k --max-time 10 "$url" > /dev/null
|
|
then
|
|
# Do nothing -- the retrieval was successful
|
|
true
|
|
else
|
|
exec sh -c "$failurecommand"
|
|
fi
|