check_batip6 1.9 KB

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