From 99e06e97ceada5553079374649a764acfba0b90f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Tue, 11 Mar 2025 10:27:42 +0100 Subject: [PATCH] =?UTF-8?q?am=C3=A9lioration=20du=20traitement=20des=20IP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/server-dhcp/setup_dhcp.sh | 40 +++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/scripts/server-dhcp/setup_dhcp.sh b/scripts/server-dhcp/setup_dhcp.sh index d25fa00..4164974 100644 --- a/scripts/server-dhcp/setup_dhcp.sh +++ b/scripts/server-dhcp/setup_dhcp.sh @@ -14,6 +14,7 @@ else echo "dnsmasq est déjà installé." fi + # Obtenir l'adresse IP du serveur sur l'interface principale IP_SERVEUR=$(ip -4 addr show $(ip route show default | awk '/default/ {print $5}') | grep -oP '(?<=inet\s)\d+(\.\d+){3}') if [[ -z "$IP_SERVEUR" ]]; then @@ -29,25 +30,54 @@ else exit 1 fi -# Déduire le sous-réseau en fonction de l'adresse IP détectée +FORCE=false +if [[ "$1" == "--force" ]]; then + FORCE=true + echo "Mode forçage activé : reconfiguration complète..." +fi + +if systemctl is-active --quiet dnsmasq && [ "$FORCE" = false ]; then + echo "dnsmasq est déjà actif et configuré. Utilisez --force pour reconfigurer." + exit 0 +fi + +# Déduire le sous-réseau et proposer des domaines en fonction du réseau détecté if [[ "$IP_SERVEUR" =~ ^10\. ]]; then SOUS_RESEAU=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1".0.0.0/8"}') DHCP_START=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1".0.0.10"}') DHCP_END=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1".0.0.100"}') + DOMAIN_SUGGESTIONS=("lan10.local" "private10.local" "intranet10.local") elif [[ "$IP_SERVEUR" =~ ^172\.(1[6-9]|2[0-9]|3[0-1])\. ]]; then SOUS_RESEAU=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2".0.0/16"}') DHCP_START=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2".0.10"}') DHCP_END=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2".0.100"}') + DOMAIN_SUGGESTIONS=("lan172.local" "private172.local" "intranet172.local") elif [[ "$IP_SERVEUR" =~ ^192\.168\. ]]; then SOUS_RESEAU=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2"."$3".0/24"}') DHCP_START=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2"."$3".10"}') DHCP_END=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2"."$3".100"}') + DOMAIN_SUGGESTIONS=("home.local" "office.local" "lan.local") fi -# Demander le nom de domaine -read -p "Entrez le domaine (ex: monreseau.local): " DOMAINE -if [[ -z "$DOMAINE" ]]; then - echo "Domaine invalide." +# Afficher les suggestions de domaine et demander à l'utilisateur de choisir +echo "Propositions de domaine :" +for i in "${!DOMAIN_SUGGESTIONS[@]}"; do + echo "[$((i+1))] ${DOMAIN_SUGGESTIONS[$i]}" +done +echo "[0] Saisir un autre domaine" + +read -p "Choisissez un domaine (1-${#DOMAIN_SUGGESTIONS[@]}) ou 0 pour entrer le vôtre : " CHOIX_DOMAINE + +if [[ "$CHOIX_DOMAINE" =~ ^[1-9]+$ ]] && ((CHOIX_DOMAINE >= 1 && CHOIX_DOMAINE <= ${#DOMAIN_SUGGESTIONS[@]})); then + DOMAINE=${DOMAIN_SUGGESTIONS[$((CHOIX_DOMAINE-1))]} +elif [[ "$CHOIX_DOMAINE" == "0" ]]; then + read -p "Entrez votre domaine personnalisé : " DOMAINE + if [[ -z "$DOMAINE" ]]; then + echo "Domaine invalide." + exit 1 + fi +else + echo "Choix invalide." exit 1 fi