#!/bin/bash # Déterminer l'interface réseau active INTERFACE=$(ip route | grep default | awk '{print $5}') if [[ -z "$INTERFACE" ]]; then echo "Erreur : Impossible de détecter une interface réseau active." exit 1 fi # Obtenir l'adresse IP et le masque de sous-réseau IP_ADDR=$(ip -4 addr show "$INTERFACE" | grep -oP '(?<=inet\s)\d+(\.\d+){3}') SUBNET_MASK=$(ip -4 addr show "$INTERFACE" | grep -oP '(?<=inet\s)\d+(\.\d+){3}/\d+' | cut -d'/' -f2) # Vérifier que l'adresse et le masque sont valides if [[ -z "$IP_ADDR" || -z "$SUBNET_MASK" ]]; then echo "Erreur : Impossible de récupérer l'adresse IP et le masque de sous-réseau." exit 1 fi # Calculer l'adresse réseau IFS='.' read -r i1 i2 i3 i4 <<< "$(echo "$IP_ADDR" | cut -d'/' -f1)" NET_PREFIX=$(sipcalc "$IP_ADDR/$SUBNET_MASK" | grep 'Network address' | awk '{print $3}') # Scanner le réseau et trouver la première adresse libre echo "🔍 Scan du réseau $NET_PREFIX/$SUBNET_MASK en cours..." for ((i=2; i<255; i++)); do TEST_IP="$i1.$i2.$i3.$i" # Vérifier si l'IP répond au ping if ! ping -c 1 -W 1 "$TEST_IP" &>/dev/null; then echo "✅ Première IP disponible : $TEST_IP" exit 0 fi done echo "❌ Aucune IP libre trouvée dans le sous-réseau." exit 1