amélioration du traitement des IP

This commit is contained in:
2025-03-11 10:27:42 +01:00
parent a703b0f429
commit 99e06e97ce

View File

@@ -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