I’m setting up cron job for a storage server using ZFS. There’s zpool status -x but it returns “all pools are healthy” (or “no pools available”) on no error and prints errors to stdout (instead of stderr), rendering it annoying for cron job.
#!/bin/sh
set -e
set -u
zstatus="`zpool status -x 2>&1`"
case "${zstatus}" in
"all pools are healthy"|"no pools available")
return 0
;;
*)
printf "%sn" "${zstatus}" >&2
return 1
;;
esac
Put it in a file (e.g. /root/bin/zpool-status-cron), make it executable, and add it to crontab.