diff --git a/dns/add_server_2_dns.sh b/dns/add_server_2_dns.sh index 8610663..4e7e805 100755 --- a/dns/add_server_2_dns.sh +++ b/dns/add_server_2_dns.sh @@ -3,31 +3,31 @@ . ~/plescripts/plelib.sh . ~/plescripts/networklib.sh - . ~/plescripts/global.cfg EXEC_CMD_ACTION=EXEC -typeset -r ME=$0 -typeset -r PARAMS="$*" -typeset -r str_usage=\ +typeset -r ME=$0 +typeset -r PARAMS="$*" + +typeset -r str_usage=\ "Usage : $ME -name= Server name -ip=|-ip_node= ip or ip node [-not_restart_named] do not restart named " -typeset -r DOMAIN_NAME=$(hostname -d) +typeset -r DOMAIN_NAME=$(hostname -d) -typeset -r named_file=/var/named/named.${DOMAIN_NAME} -typeset -r reverse_file=/var/named/reverse.${DOMAIN_NAME} +typeset -r named_file=/var/named/named.${DOMAIN_NAME} +typeset -r reverse_file=/var/named/reverse.${DOMAIN_NAME} LN exit_if_file_not_exists $named_file exit_if_file_not_exists $reverse_file -typeset server_name=undef -typeset server_ip=undef -typeset restart_named="yes" +typeset server_name=undef +typeset server_ip=undef +typeset restart_named="yes" while [ $# -ne 0 ] do @@ -57,8 +57,8 @@ do -ip_node=*) server_ip=${1##*=} - typeset -i count_char=$(wc -m <<< "$server_ip") - count_char=count_char-1 + typeset -i count_char=$(wc -m <<< "$server_ip") + ((++count_char)) if [ $count_char -lt 1 ] || [ $count_char -gt 3 ] then error "Bad ip node : $server_ip" @@ -72,7 +72,7 @@ do ;; -not_restart_named) - restart_named="no" + restart_named=no shift ;; @@ -88,9 +88,9 @@ done exit_if_param_undef server_name "$str_usage" exit_if_param_undef server_ip "$str_usage" -typeset -r ip_node=${server_ip##*.} +typeset -r ip_node=${server_ip##*.} -grep "^\b$server_name .* $server_ip" $named_file +grep "^\b$server_name.*$server_ip$" $named_file if [ $? -eq 0 ] then info "$server_name / $server_ip already registered, nothing to do." @@ -98,15 +98,17 @@ then fi info "Update $named_file" -exec_cmd "printf \"%-19s IN A %s\n\" $server_name $server_ip >> $named_file" +exec_cmd "printf \"%s A %s\n\" $server_name $server_ip >> $named_file" LN info "Update $reverse_file" -exec_cmd "printf \"%-3s IN PTR %s.%s.\n\" $ip_node $server_name $DOMAIN_NAME >> $reverse_file" +exec_cmd "printf \"%s PTR %s.%s.\n\" $ip_node $server_name $DOMAIN_NAME >> $reverse_file" LN -if [ "$restart_named" = "yes" ] +if [ $restart_named == yes ] then - info "Restart named" + info "Restart named && dhcp" exec_cmd "systemctl restart named.service" + exec_cmd "systemctl restart dhcpd.service" + LN fi diff --git a/dns/install/config_template/named.domain.template b/dns/install/config_template/named.domain.template index 6f00513..339a9c0 100644 --- a/dns/install/config_template/named.domain.template +++ b/dns/install/config_template/named.domain.template @@ -1,10 +1,11 @@ +; vim:ts=8:sw=8 $TTL 86400 -@ IN SOA localhost root.localhost ( - 42 ; serial (d. adams) - 3H ; refresh - 15M ; retry - 1W ; expiry - 1D ) ; minimum - IN NS localhost -localhost IN A 127.0.0.1 -DNS_NAME IN A DNS_IP +@ IN SOA localhost root.localhost ( + 46 ; serial (d. adams) + 3H ; refresh + 15M ; retry + 1W ; expiry + 1D ) ; minimum + NS localhost +localhost A 127.0.0.1 +DNS_NAME A DNS_IP diff --git a/dns/install/config_template/reverse.domain.template b/dns/install/config_template/reverse.domain.template index 8072189..2f51630 100644 --- a/dns/install/config_template/reverse.domain.template +++ b/dns/install/config_template/reverse.domain.template @@ -1,10 +1,13 @@ +; vim:ts=8:sw=8 $ORIGIN REVERSED_NETWORK.in-addr.arpa. $TTL 1H -@ IN SOA DNS_NAME.DOMAIN_NAME. root.DNS_NAME.DOMAIN_NAME. ( 2 - 3H - 1H - 1W - 1H ) -REVERSED_NETWORK.in-addr.arpa. IN NS DNS_NAME.DOMAIN_NAME. +@ IN SOA DNS_NAME.DOMAIN_NAME. root.DNS_NAME.DOMAIN_NAME. ( + 6 + 3H + 1H + 1W + 1H + ) +$ORIGIN REVERSED_NETWORK.in-addr.arpa. -DNS_IP_NODE IN PTR DNS_NAME.DOMAIN_NAME. +DNS_IP_NODE PTR DNS_NAME.DOMAIN_NAME. diff --git a/dns/remove_db_from_dns.sh b/dns/remove_db_from_dns.sh index b2ce60b..02efde3 100755 --- a/dns/remove_db_from_dns.sh +++ b/dns/remove_db_from_dns.sh @@ -7,20 +7,12 @@ . ~/plescripts/global.cfg EXEC_CMD_ACTION=EXEC -typeset -r ME=$0 -typeset -r PARAMS="$*" +typeset -r ME=$0 +typeset -r PARAMS="$*" -typeset -r str_usage="Usage : $ME -db=<>" +typeset -r str_usage="Usage : $ME -db=<>" -typeset -r DOMAIN_NAME=$(hostname -d) - -typeset -r named_file=/var/named/named.${DOMAIN_NAME} -typeset -r reverse_file=/var/named/reverse.${DOMAIN_NAME} - -exit_if_file_not_exists $named_file -exit_if_file_not_exists $reverse_file - -typeset db=undef +typeset db=undef while [ $# -ne 0 ] do @@ -48,12 +40,7 @@ exit_if_param_undef db $str_usage cfg_exists $db -typeset -ri max_nodes=$(cfg_max_nodes $db) - -info "Backup DNS configuration :" -exec_cmd cp $named_file ${named_file}.backup -exec_cmd cp $reverse_file ${reverse_file}.backup -LN +typeset -ri max_nodes=$(cfg_max_nodes $db) for (( inode=1; inode <= max_nodes; ++inode )) do @@ -65,10 +52,23 @@ done if [ -f $cfg_path_prefix/$db/scanvips ] then - scan_name=$(cat $cfg_path_prefix/$db/scanvips | cut -d: -f1) + typeset -r DOMAIN_NAME=$(hostname -d) + typeset -r named_file=/var/named/named.${DOMAIN_NAME} + + IFS=':' read scan_name vip1 vip2 vip3<<<$(cat $cfg_path_prefix/$db/scanvips) + exec_cmd ~/plescripts/dns/remove_server.sh -name=$scan_name -no_restart LN + + # Depuis l'utilisation de DHCP le non de la SCAN n'est présent qu'une fois + # il y a donc 2 IP qui ne sont pas effacées par le script remove_server.sh. + exec_cmd "sed -i '/${vip1}/d' $named_file" + exec_cmd "sed -i '/${vip2}/d' $named_file" + exec_cmd "sed -i '/${vip3}/d' $named_file" + LN fi +info "Restart named & dhcpd" exec_cmd "systemctl restart named.service" +exec_cmd "systemctl restart dhcpd.service" LN diff --git a/dns/remove_server.sh b/dns/remove_server.sh index 4d3fbd3..03b2963 100755 --- a/dns/remove_server.sh +++ b/dns/remove_server.sh @@ -55,7 +55,7 @@ exit_if_param_undef name $str_usage IFS='.' read server_name server_domain<<<$(echo $name) -exec_cmd "sed -i '/${server_name} /d' $named_file" +exec_cmd "sed -i '/^${server_name}\t/d' $named_file" LN exec_cmd "sed -i '/${server_name}.${DOMAIN_NAME}/d' $reverse_file" @@ -63,7 +63,8 @@ LN if [ $restart = yes ] then - info "Restart named" + info "Restart named & dhcpd" exec_cmd "systemctl restart named.service" + exec_cmd "systemctl restart dhcpd.service" LN fi diff --git a/dns/show_dns.sh b/dns/show_dns.sh index bed180b..fd5ea2c 100755 --- a/dns/show_dns.sh +++ b/dns/show_dns.sh @@ -3,23 +3,29 @@ . ~/plescripts/plelib.sh -typeset -r domain=$(hostname -d) +typeset -r domain=$(hostname -d) typeset -r horizontal_separator=$( fill "~" $(( 18 + 1 + 1 + 1 + 15)) ) info $horizontal_separator info "$(printf "%-18s | %s" "Server" "ip")" info $horizontal_separator -# Trié par rapport à l'ip node. -cat /var/named/named.$domain |\ - grep -E "^[[:alpha:]].*\sA\s." |\ - grep -v localhost |\ - sort -n -t "." -k 4 |\ -while read server_name f1 f2 server_ip +# Avec le DHCP les fichiers DNS sont reformatés, les IP d'une adresse de SCAN +# ne sont pas simple à récupérer, donc je passe maintenant par le fichier +# reverse. +typeset -r network="$(ping -c 1 $(hostname) |\ + grep "PING" |\ + cut -d\( -f2 |\ + cut -d. -f1-3)" +cat /var/named/reverse.$domain |\ + grep -E "^[0-9]" |\ + grep -v "arpa" |\ + sort -n |\ +while read ip_node f2 server_name do - # Avec l'enregistrement DHCP il y a un champ de moins. - [ x"$server_ip" == x ] && server_ip=$f2 || true - info "$(printf "%-18s | %s" $server_name $server_ip)" + [ x"$ip_node" == x ] && continue || true + server_name="$(cut -d. -f1<<<"$server_name")" + info "$(printf "%-18s | %s" $server_name "$network.$ip_node")" done info $horizontal_separator