check_twodns.sh 965 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/bash
  2. # Return Codes:
  3. # 0 - Ok! - Up
  4. # 1 - Warning - Flaky
  5. # 2 - Critical - Down
  6. # 3 - Unknown - Ummm... What happened?!
  7. STATE=3
  8. print_usage() {
  9. echo "Usage: check_twodns.sh [Master DNS] [Slave DNS] [Zone]"
  10. }
  11. #Parameter prüfen
  12. if [ $# -ne 3 ]; then
  13. print_usage
  14. exit $STATE
  15. fi
  16. SerialMaster=$(/usr/bin/dig @${1} ${3} +short SOA | awk '{print $3}')
  17. if [ $? -ne 0 ] || [ -z "$SerialMaster" ]; then
  18. echo "Error reading Serial from Master for Domain \"${3}\""
  19. exit 3
  20. fi
  21. SerialSlave=$(/usr/bin/dig @${2} ${3} +short SOA | awk '{print $3}')
  22. if [ $? -ne 0 ] || [ -z "$SerialSlave" ]; then
  23. echo "Error reading Serial from Slave for Domain \"${3}\""
  24. exit 3
  25. fi
  26. if [ "$SerialMaster" -eq "$SerialSlave" ]; then
  27. Status="Serial for \"${3}\" is identical on both DNS-Servers: ${SerialMaster}"
  28. STATE=0
  29. else
  30. echo "Serial for \"${3}\" is different. Master: ${SerialMaster}, Slave: ${SerialSlave}"
  31. STATE=2
  32. fi
  33. echo $Status
  34. exit $STATE