Shell Scripts

You can easily add Cron monitoring monitoring to a shell script. All you have to do is make a HTTP request at the end of the script. curl and wget are two common command line HTTP clients you can use.

# Sending a HTTP GET request with curl:
curl --retry 3 https://cronmon.science.ru.nl/ping/your-uuid-here

# Silent version (no stdout/stderr output unless curl hits an error):
curl -fsS --retry 3 https://cronmon.science.ru.nl/ping/your-uuid-here

# Sending a HTTP GET request with wget:
wget https://cronmon.science.ru.nl/ping/your-uuid-here -O /dev/null

Signalling Failure from Shell Scripts

You can append /fail to any ping URL and use the resulting URL to actively signal a failure. The below example:

  • runs /usr/bin/certbot renew
  • if the certbot command is successful (exit code 0), send HTTP GET to https://cronmon.science.ru.nl/ping/your-uuid-here
  • otherwise, send HTTP GET to https://cronmon.science.ru.nl/ping/your-uuid-here/fail
#!/bin/sh

# Payload here:
/usr/bin/certbot renew
# Ping Cron monitoring
curl --retry 3 "https://cronmon.science.ru.nl/ping/your-uuid-here$([ $? -ne 0 ] && echo -n /fail)"

Logging Command Output

When pinging with HTTP POST, you can put extra diagnostic information in request body. If the request body looks like a valid UTF-8 string, Cron monitoring will accept and store first 10KB of the request body.

In the below example, certbot's output is captured and submitted via HTTP POST:

#!/bin/sh

m=$(/usr/bin/certbot renew 2>&1)
curl -fsS --retry 3 -X POST --data-raw "$m" https://cronmon.science.ru.nl/ping/your-uuid-here