#! /bin/bash 
# Version: 1.1
# Date: 02.07.2026

for device in /dev/md[0-9]*; do
        mddata="$(/sbin/mdadm --brief --verbose --detail "${device}")"
        expected_devices="$(echo "${mddata}" | xargs -n1 | grep -E '^num-devices=' | cut -d'=' -f 2)"
        found_devices="$(echo "${mddata}" | xargs -n1 | grep -E '^devices=' | cut -d '=' -f 2 | cut -d ',' -f1- --output-delimiter=$'\n' | grep -cEv '/md/*')"
        spare_devices="$(/sbin/mdadm --detail "${device}" | awk -F ': ' '$0 ~ /Spare Devices/ {print$2}')"
        [ "${expected_devices}" -gt "${found_devices}" ] &&
                echo "ERROR: raid ${device} is missing devices" &&
                exit 2
        # check for spare devices
        [ "${spare_devices}" -gt "0" ] &&
                echo "${device}: Rebuild in progress" &&
                rebuild=1
done

# Check for a failed device
mdadm -D /dev/md[0-9]*|grep "Failed Devices"|grep -v 0
faulty_device=$?

if [ "$faulty_device" -lt "1" ]; then
  echo "There are faulty Devices in your Raid"
  exit 2
elif [ "$rebuild" == "1" ]; then
  exit 1
else
  echo "OK: all raid devices match expected device count"
  exit 0
fi

