From cb0897aa2f8dee9784b495264533926958e17c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= <cedric@abonnel.fr> Date: Wed, 12 Mar 2025 07:51:57 +0100 Subject: [PATCH] =?UTF-8?q?pb=20sur=20la=20recherche=20d'IP=20corrig=C3=A9?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/server-dhcp/add_dns_entry.sh | 43 ++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/scripts/server-dhcp/add_dns_entry.sh b/scripts/server-dhcp/add_dns_entry.sh index 6587e9f..907cdad 100644 --- a/scripts/server-dhcp/add_dns_entry.sh +++ b/scripts/server-dhcp/add_dns_entry.sh @@ -25,11 +25,36 @@ IP="$1" shift # Supprime le premier argument pour ne garder que les hostnames HOSTNAMES=("$@") +# Fonction pour obtenir le nom de domaine de la machine +get_domain_name() { + local domain=$(dnsdomainname) + echo "$domain" +} + +# Fonction pour obtenir le FQDN d'un hostname +get_fqdn() { + local hostname="$1" + local domain_name=$(get_domain_name) + if [[ -n "$domain_name" ]]; then + echo "$hostname.$domain_name" + else + echo "$hostname" + fi +} + +# Fonction pour vérifier si un hostname est déjà enregistré +is_hostname_registered() { + local hostname="$1" + grep -q "address=/$hostname/$IP" "$DNSMASQ_CONF" + return $? +} + # Variable pour suivre si un changement a été fait MODIFIED=0 # Vérifier si l'IP existe déjà dans le fichier -EXISTING_HOSTNAMES=($(grep "address=.*/$IP" "$DNSMASQ_CONF" | sed -E "s/address=\/(.*)\/$IP/\1/")) +EXISTING_HOSTNAMES=($(grep -E "address=/[^ ]+/$IP$" "$DNSMASQ_CONF" | sed -E "s/address=\/([^\/]+)\/$IP/\1/")) + if [[ ${#EXISTING_HOSTNAMES[@]} -gt 0 ]]; then echo "L'adresse IP $IP existe déjà avec les noms suivants : ${EXISTING_HOSTNAMES[*]}" @@ -39,12 +64,18 @@ fi # Vérifier et ajouter chaque hostname for HOSTNAME in "${HOSTNAMES[@]}"; do - if [[ ! " ${EXISTING_HOSTNAMES[*]} " =~ " ${HOSTNAME} " ]]; then - echo "address=/$HOSTNAME/$IP" >> "$DNSMASQ_CONF" - echo "Ajout de : $HOSTNAME -> $IP" - MODIFIED=1 + FQDN=$(get_fqdn "$HOSTNAME") + echo "Le FQDN détecté pour $HOSTNAME est : $FQDN" + + if is_hostname_registered "$FQDN"; then + echo "L'association $FQDN -> $IP existe déjà." else - echo "L'association $HOSTNAME -> $IP existe déjà." + read -p "Le FQDN $FQDN n'est pas dans la liste. Voulez-vous l'ajouter ? (o/n) " REPLY + if [[ "$REPLY" =~ ^[Oo]$ ]]; then + echo "address=/$FQDN/$IP" >> "$DNSMASQ_CONF" + echo "Ajout de : $FQDN -> $IP" + MODIFIED=1 + fi fi done