1. #! /bin/bash
  2. function usage(){
  3. echo "usage $0
  4. -m | --method (add|delete)
  5. -d | --domain_name domain_name
  6. -c | --class ( A | AAAA | NS | default:A )
  7. -i | --data ( ip|domain_name )
  8. -z | --zone zone_name 显示zone记录
  9. "
  10. }
  11. [ $# -eq 0 ] && usage && exit 1
  12. ARGV=`getopt -o m:d:c:i:-z:h -l method:,domain_name:,class:,data:,zone:,help -n test.sh -- "$@"`
  13. eval set --"$ARGV"
  14. while true
  15. do
  16. case "$1" in
  17. -m|--method)
  18. method="$2"
  19. shift
  20. ;;
  21. -d|--domain_name)
  22. domain_name="$2"
  23. shift
  24. ;;
  25. -c|--class)
  26. class="$2"
  27. shift
  28. ;;
  29. -i|--data)
  30. data="$2"
  31. shift
  32. ;;
  33. -z|--zone)
  34. zone="$2"
  35. shift
  36. ;;
  37. -h|--help)
  38. usage
  39. exit 0
  40. ;;
  41. --)
  42. shift
  43. break
  44. ;;
  45. *)
  46. usage
  47. exit 0
  48. ;;
  49. esac
  50. shift
  51. done
  52. cmd=/app/bind9/bin/nsupdate
  53. function test_argments(){
  54. [ -z $1 ]
  55. }
  56. test_argments $class && class=A
  57. function add_domain(){
  58. $cmd -v <<EOF
  59. server 127.0.0.1 53
  60. update $method $domain_name 86400 IN $class $data
  61. send
  62. quit
  63. EOF
  64. }
  65. function del_domain(){
  66. $cmd -v <<EOF
  67. server 127.0.0.1 53
  68. update $method $domain_name $class $data
  69. send
  70. EOF
  71. }
  72. function show_domain(){
  73. dig -t axfr $zone @127.0.0.1 | grep '^[^;]' | grep -v SOA
  74. }
  75. if [ "$method" == 'add' ]
  76. then
  77. test_argments $domain_name && echo 'method为add ,domain_name 不能为空' && test_argments $data && echo 'metod为add,data 不能为空' || add_domain
  78. elif [ "$method" == 'delete' ]
  79. then
  80. test_argments $domain_name && echo 'metod为del ,domain_name 不能为空' || del_domain
  81. fi
  82. test_argments $zone || show_domain
文档更新时间: 2018-12-12 20:56   作者:张尚