ZFS Checkscript für Zabbix

#!/bin/bash
# zfs_health_check.sh
# Gibt 0 zurück, wenn alle ZFS-Pools ONLINE sind, sonst 1
# Optional: Mit Parameter --verbose werden Details ausgegeben

VERBOSE=0
if [[ "$1" == "--verbose" ]]; then
    VERBOSE=1
fi

# Prüfen, ob zpool vorhanden ist
if ! command -v zpool &>/dev/null; then
    echo "zpool command not found"
    exit 1
fi

POOLS=$(zpool list -H -o name)
if [ -z "$POOLS" ]; then
    echo "no_pools_found"
    exit 1
fi

ERROR_FOUND=0
DETAILS=""

for POOL in $POOLS; do
    HEALTH=$(zpool list -H -o health "$POOL")

    if [[ "$HEALTH" != "ONLINE" ]]; then
        ERROR_FOUND=1
        DETAILS+="$POOL:$HEALTH "
    else
        DETAILS+="$POOL:$HEALTH "
    fi
done

if [ $VERBOSE -eq 1 ]; then
    if [ $ERROR_FOUND -eq 0 ]; then
        echo "OK: all pools ONLINE -> $DETAILS"
    else
        echo "ERROR: $DETAILS"
    fi
else
    echo $ERROR_FOUND
fi

exit $ERROR_FOUND