choix de l'interface et de l'interface IP

This commit is contained in:
2025-03-20 07:27:41 +01:00
parent f22cf0bff7
commit 506dfb1086

View File

@@ -18,42 +18,51 @@ else
echo "dnsmasq est déjà installé." echo "dnsmasq est déjà installé."
fi 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 if [[ ${#NOMS[@]} -eq 0 ]]; then
mapfile -t IPS < <(ip -4 -o addr show | awk '!/ lo / {print $2" "$4}') echo "Aucune interface réseau trouvée."
if [[ ${#IPS[@]} -eq 0 ]]; then
echo "Aucune interface réseau avec une adresse IPv4 trouvée."
exit 1 exit 1
fi fi
echo "Sélectionnez l'interface et l'IP à utiliser :" # Construire les options avec IP si existante
select CHOIX in "${IPS[@]}"; do OPTIONS=()
if [[ -n "$CHOIX" ]]; then for IFACE in "${NOMS[@]}"; do
INTERFACE=$(echo "$CHOIX" | awk '{print $1}') # Nettoyer l'interface de @ifX
IP_SERVEUR=$(echo "$CHOIX" | awk '{print $2}' | cut -d'/' -f1) IFACE_CLEAN=$(echo "$IFACE" | cut -d'@' -f1)
break 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 else
echo "Choix invalide." OPTIONS+=("$IFACE_CLEAN (Pas d'IP)")
fi fi
done done
echo "Interface sélectionnée : $INTERFACE" echo "Sélectionnez l'interface réseau à utiliser (IP affichée si existante) :"
echo "Adresse IP sélectionnée : $IP_SERVEUR" PS3="Votre choix : "
select CHOIX in "${OPTIONS[@]}"; do
# Demander si l'utilisateur veut utiliser une autre IP if [[ -n "$CHOIX" ]]; then
read -rp "Voulez-vous utiliser une autre adresse IP que $IP_SERVEUR ? (o/N) : " REPONSE INTERFACE=$(echo "$CHOIX" | awk '{print $1}')
break
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"
else else
echo "❌ Adresse IP invalide. On garde l'IP sélectionnée : $IP_SERVEUR" echo "Choix invalide. Veuillez réessayer."
fi 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 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 # 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 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" echo "✅ Adresse IP privée détectée : $IP_SERVEUR"