check_batip 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/bin/bash
  2. #
  3. #exitcodes
  4. STATE_OK=0
  5. STATE_WARNING=1
  6. STATE_CRITICAL=2
  7. STATE_UNKNOWN=3
  8. #########################################################################
  9. # Pro Domäne die a.b.c.2, a.b.c.3, a.b.c.11 und a.b.c.12 pingen, falls zwei nicht pingbar ? Wahrscheinlich hängt das Batman
  10. #########################################################################
  11. CHECKIP="2 3 11 12"
  12. PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
  13. export PATH
  14. PROGNAME=`basename $0`
  15. PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
  16. REVISION="2.2"
  17. . $PROGPATH/utils.sh
  18. print_usage() {
  19. echo "Usage: $PROGNAME -D {Domain}"
  20. echo "Usage: $PROGNAME --help"
  21. }
  22. print_help() {
  23. print_usage
  24. echo ""
  25. echo "Batman pro Domain per IP überwachen"
  26. echo ""
  27. support
  28. }
  29. if [ $# -lt 2 ]; then
  30. print_usage
  31. exit $STATE_UNKNOWN
  32. fi
  33. while test -n "$1"; do
  34. case "$1" in
  35. --help)
  36. print_help
  37. exit $STATE_OK
  38. ;;
  39. -h)
  40. print_help
  41. exit $STATE_OK
  42. ;;
  43. -V)
  44. IPVERSION=$2
  45. shift
  46. ;;
  47. -D)
  48. DOMAIN=$2
  49. shift
  50. ;;
  51. *)
  52. echo "Unknown argument: $1"
  53. print_usage
  54. exit $STATE_UNKNOWN
  55. ;;
  56. esac
  57. shift
  58. done
  59. IPBASE=$(ip -f inet -o addr show bat$DOMAIN | sed -e 's/.*inet \([0-9]*\.[0-9]*\.[0-9]*\.\).*/\1/g')
  60. if [ "$IPBASE" == "" ] ; then
  61. echo "UNKNOWN: interface bat$DOMAIN not found"
  62. exit $STATE_UNKNOWN
  63. fi
  64. #echo Base: $IPBASE
  65. COUNTOK=0
  66. for a in $CHECKIP ; do
  67. #echo $IPBASE$a
  68. ping -c 1 $IPBASE$a > /dev/null && COUNTOK=$[COUNTOK+1]
  69. done
  70. #echo es antworten $COUNTOK IPs
  71. if [ $COUNTOK -lt 3 ]; then
  72. echo "CRITICAL: Es antworten nur $COUNTOK der Domain-IPs $CHECKIP"
  73. exit $STATE_CRITICAL
  74. else
  75. echo "OK: es antworten $COUNTOK der Domain-IPs $CHECKIP"
  76. exit $STATE_OK
  77. fi