Here's a small shell script that runs on one of my other hosts to monitor that my one cloudsync job works.
To use it, you'll need to change the `storage.realm` URL to something that can reach your NAS, and you'll need to change the thing after "Bearer" to your API token.
This script definitely assumes you have single cloudsync job, and will likely give false successes if you have more than one and one is failing.
Feel free to bug me if you need it tweaked; robinleepowell [at] gmail
To use it, you'll need to change the `storage.realm` URL to something that can reach your NAS, and you'll need to change the thing after "Bearer" to your API token.
This script definitely assumes you have single cloudsync job, and will likely give false successes if you have more than one and one is failing.
Feel free to bug me if you need it tweaked; robinleepowell [at] gmail
Code:
#!/bin/bash # Error trapping from https://gist.github.com/oldratlee/902ad9a398affca37bfcfab64612e7d1 __error_trapper() { local parent_lineno="$1" local code="$2" local commands="$3" echo "error exit status $code, at file $0 on or near line $parent_lineno: $commands" } trap '__error_trapper "${LINENO}/${BASH_LINENO}" "$?" "$BASH_COMMAND"' ERR set -euE -o pipefail # Cron's PATH often sucks export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin # Check success if [[ $(curl -s -X GET "http://storage.realm/api/v2.0/core/get_jobs" -H "accept: */*" -H "Authorization: Bearer 1-l[SNIP]Fhn" | jq -r '[.[] | select(.method=="cloudsync.sync")] | last | .state') != "SUCCESS" ]] then echo "ERROR: Not successful!" exit 1 fi # Twice if [[ $(curl -s -X GET "http://storage.realm/api/v2.0/core/get_jobs" -H "accept: */*" -H "Authorization: Bearer 1-l[SNIP]Fhn" | jq -r '[.[] | select(.method=="cloudsync.sync")] | last | .progress.percent') != "100" ]] then echo "ERROR: Not 100% complete!" exit 1 fi # Check that the number of items checked has a sensible number num=$(curl -s -X GET "http://storage.realm/api/v2.0/core/get_jobs" -H "accept: */*" -H "Authorization: Bearer 1-l[SNIP]Fhn" | jq -r '[.[] | select(.method=="cloudsync.sync")] | last | .progress.description' | sed 's/.* //') if [[ $num -lt 2000 ]] then echo "ERROR: Not enough items!" exit 1 fi # Check the date jobdate=$(curl -s -X GET "http://storage.realm/api/v2.0/core/get_jobs" -H "accept: */*" -H "Authorization: Bearer 1-l[SNIP]Fhn" | jq -r '[.[] | select(.method=="cloudsync.sync")] | last | .time_finished."$date"' | sed 's/...$//') tdadate=$(date +%s -d '2 days ago') if [[ $jobdate -lt $tdadate ]] then echo "ERROR: Too old!" exit 1 fi echo "cloudsync job completed successfully within the past 2 days"