choix de l'interface et de l'interface IP
This commit is contained in:
parent
f22cf0bff7
commit
506dfb1086
scripts/server-dhcp
|
@ -18,42 +18,51 @@ else
|
|||
echo "dnsmasq est déjà installé."
|
||||
fi
|
||||
|
||||
# Récupérer toutes les interfaces réseau sauf loopback
|
||||
mapfile -t NOMS < <(ip -o link show | awk -F': ' '{print $2}' | grep -v lo)
|
||||
|
||||
# Récupérer toutes les interfaces avec leurs IP v4, sauf loopback
|
||||
mapfile -t IPS < <(ip -4 -o addr show | awk '!/ lo / {print $2" "$4}')
|
||||
|
||||
if [[ ${#IPS[@]} -eq 0 ]]; then
|
||||
echo "Aucune interface réseau avec une adresse IPv4 trouvée."
|
||||
if [[ ${#NOMS[@]} -eq 0 ]]; then
|
||||
echo "Aucune interface réseau trouvée."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Sélectionnez l'interface et l'IP à utiliser :"
|
||||
select CHOIX in "${IPS[@]}"; do
|
||||
if [[ -n "$CHOIX" ]]; then
|
||||
INTERFACE=$(echo "$CHOIX" | awk '{print $1}')
|
||||
IP_SERVEUR=$(echo "$CHOIX" | awk '{print $2}' | cut -d'/' -f1)
|
||||
break
|
||||
# Construire les options avec IP si existante
|
||||
OPTIONS=()
|
||||
for IFACE in "${NOMS[@]}"; do
|
||||
# Nettoyer l'interface de @ifX
|
||||
IFACE_CLEAN=$(echo "$IFACE" | cut -d'@' -f1)
|
||||
IP=$(ip -4 -o addr show "$IFACE_CLEAN" 2>/dev/null | awk '{print $4}' | cut -d'/' -f1)
|
||||
if [[ -n "$IP" ]]; then
|
||||
OPTIONS+=("$IFACE_CLEAN ($IP)")
|
||||
else
|
||||
echo "Choix invalide."
|
||||
OPTIONS+=("$IFACE_CLEAN (Pas d'IP)")
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Interface sélectionnée : $INTERFACE"
|
||||
echo "Adresse IP sélectionnée : $IP_SERVEUR"
|
||||
|
||||
# Demander si l'utilisateur veut utiliser une autre IP
|
||||
read -rp "Voulez-vous utiliser une autre adresse IP que $IP_SERVEUR ? (o/N) : " REPONSE
|
||||
|
||||
if [[ "$REPONSE" =~ ^[oO]$ ]]; then
|
||||
read -rp "Saisissez l'adresse IP souhaitée : " IP_MANUELLE
|
||||
if [[ "$IP_MANUELLE" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
|
||||
IP_SERVEUR="$IP_MANUELLE"
|
||||
echo "✅ Nouvelle adresse IP sélectionnée : $IP_SERVEUR"
|
||||
echo "Sélectionnez l'interface réseau à utiliser (IP affichée si existante) :"
|
||||
PS3="Votre choix : "
|
||||
select CHOIX in "${OPTIONS[@]}"; do
|
||||
if [[ -n "$CHOIX" ]]; then
|
||||
INTERFACE=$(echo "$CHOIX" | awk '{print $1}')
|
||||
break
|
||||
else
|
||||
echo "❌ Adresse IP invalide. On garde l'IP sélectionnée : $IP_SERVEUR"
|
||||
echo "Choix invalide. Veuillez réessayer."
|
||||
fi
|
||||
done
|
||||
|
||||
# Maintenant que l'interface est choisie, récupérer l'IP
|
||||
IP_EXISTANTE=$(ip -4 -o addr show "$INTERFACE" 2>/dev/null | awk '{print $4}' | cut -d'/' -f1)
|
||||
|
||||
if [[ -n "$IP_EXISTANTE" ]]; then
|
||||
IP_SERVEUR="$IP_EXISTANTE"
|
||||
else
|
||||
read -rp "Aucune IP détectée sur $INTERFACE. Veuillez entrer une IP à utiliser : " IP_SAISIE
|
||||
IP_SERVEUR="$IP_SAISIE"
|
||||
fi
|
||||
|
||||
echo "✅ Interface sélectionnée : $INTERFACE"
|
||||
echo "✅ Adresse IP sélectionnée : $IP_SERVEUR"
|
||||
|
||||
# Vérifier si l'IP est privée ou publique
|
||||
if [[ "$IP_SERVEUR" =~ ^10\. ]] || [[ "$IP_SERVEUR" =~ ^192\.168\. ]] || [[ "$IP_SERVEUR" =~ ^172\.(1[6-9]|2[0-9]|3[0-1])\. ]]; then
|
||||
echo "✅ Adresse IP privée détectée : $IP_SERVEUR"
|
||||
|
|
Loading…
Reference in New Issue