#!/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