check_osx_raid.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env bash
  2. # Nagios Exit Codes
  3. OK=0
  4. WARNING=1
  5. CRITICAL=2
  6. UNKNOWN=3
  7. usage()
  8. {
  9. cat <<EOF
  10. Check the RAID status for disks on OSX.
  11. Options:
  12. -l List full RAID information
  13. -c Check RAID status
  14. Usage: $0 -c
  15. EOF
  16. }
  17. argcheck() {
  18. # if less than n argument
  19. if [ $ARGC -lt $1 ]; then
  20. echo "Missing arguments! Use \`\`-h'' for help."
  21. exit 1
  22. fi
  23. }
  24. RAID_CHECK=0
  25. ARGC=$#
  26. argcheck 1
  27. while getopts "hlc" OPTION
  28. do
  29. case $OPTION in
  30. h)
  31. usage
  32. ;;
  33. c)
  34. RAID_CHECK=1
  35. ;;
  36. l)
  37. diskutil appleRAID list
  38. exit $OK
  39. ;;
  40. \?)
  41. exit $UNKNOWN
  42. ;;
  43. esac
  44. done
  45. if [ $RAID_CHECK -eq 1 ]; then
  46. STATUS_ROW=$(diskutil appleRAID list | awk '/^Status:/ { print $2 }')
  47. DISK=$(diskutil appleRAID list | awk '/disk.*(Fail|ebuild)/ { print $2 }')
  48. STATUS=$(diskutil appleRAID list | grep ^[0-9])
  49. case $STATUS in
  50. *[fF]ailed*)
  51. echo "$DISK Failure: $STATUS_ROW array!"
  52. exit $CRITICAL
  53. ;;
  54. *[oO]ffline*)
  55. echo "$DISK Failure: $STATUS_ROW array!"
  56. exit $CRITICAL
  57. ;;
  58. *[dD]egraded*)
  59. echo "$DISK Failure: $STATUS_ROW array!"
  60. exit $CRITICAL
  61. ;;
  62. *[Rr]ebuilding*)
  63. echo "$DISK Rebuilding: $STATUS_ROW array!"
  64. exit $WARNING
  65. ;;
  66. *[oO]nline*)
  67. echo "RAID array is online."
  68. exit $OK
  69. ;;
  70. *)
  71. echo "Unknown status for: $STATUS"
  72. exit $UNKNOWN
  73. ;;
  74. esac
  75. fi