check_osx_raid.sh 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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/ { 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. *[oO]nline*)
  63. echo "RAID array is online."
  64. exit $OK
  65. ;;
  66. *)
  67. echo "Unknown status for: $STATUS"
  68. exit $UNKNOWN
  69. ;;
  70. esac
  71. fi