diff --git a/bind/files/bind-reload-zone.sh b/bind/files/bind-reload-zone.sh new file mode 100755 index 00000000..550e5b64 --- /dev/null +++ b/bind/files/bind-reload-zone.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# Script utilitaire pour tester et recharger facilement une zone dans Bind +# + +usage() { + echo "Usage: bind-reload-zone " + echo " bind-reload-zone -h|--help" +} + +if [ $# -ne 1 ] ; then + usage + exit 1 +fi + +while :; do + case $1 in + -h|--help) + usage + exit 0 + ;; + *) + zone=$1 + break + ;; + esac + shift +done + +if ! [ -f "/etc/bind/db.${zone}" ]; then + >&2 echo "Error: zone for ${zone} not found." + usage + exit 1 +fi + +named-checkzone "${zone}" /etc/bind/db."${zone}" && rndc reload "${zone}" + diff --git a/bind/files/bind-reload-zone_completion.sh b/bind/files/bind-reload-zone_completion.sh new file mode 100644 index 00000000..2e87b12c --- /dev/null +++ b/bind/files/bind-reload-zone_completion.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +_bind_reload_zone_dynamic_completion() { + local cur; + cur=${COMP_WORDS[COMP_CWORD]}; + COMPREPLY=(); + COMPREPLY=( $( compgen -W '$(grep -v -h '"'"'//'"'"' /etc/bind/named.conf* | grep -B1 "type master" | grep zone | grep -v arpa | awk '"'"'{gsub(/"/, "", $2); print $2}'"'"' | sort | uniq)' -- $cur ) ); + + # reverse ipv4 : + #grep -v -h '//' /etc/bind/named.conf* | grep -B1 "type master" | grep zone | grep arpa | grep -v ip6 | awk '{gsub(/"/, "", $2); gsub(/.in-addr.arpa/, "", $2); print $2}' | sort | uniq | awk -F'.' '{ for (i=NF; i>1; i--) printf("%s.",$i); print $1 }' + + # reveres ipv6 : je bloque sur l'inversion 4 par 4 + #grep -v -h '//' /etc/bind/named.conf* | grep -B1 "type master" | grep zone | grep arpa | grep ip6 | awk '{gsub(/"/, "", $2); gsub(/.ip6.arpa/, "", $2); print $2}' | sort | uniq | awk -F'.' '{ for (i=NF; i>1; i--) { if ($i % 4 == 0) printf("%s.",$i); else printf("%s",$i); } print $1 }' + +} + +complete -F _bind_reload_zone_dynamic_completion bind-reload-zone + diff --git a/bind/files/reload-zone b/bind/files/reload-zone deleted file mode 100755 index b9acc449..00000000 --- a/bind/files/reload-zone +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# -# Script utilitaire pour tester et recharger facilement un domaine dans Bind -# Usage : reload-zone -# -# TODO: -# - renommer le script (par ex bind-safe-reload) -# - vérifier le serial -# - ajouter un -h --help -# - prendre en charge plusieurs zones (ou aucune) -# - ajouter le script dans le role bind - -named-checkzone "$1" /etc/bind/db."$1" && rndc reload "$1" -