Outils & Référence

🌐 Scripts Réseau — Cisco & Linux — Scripts prêts à l'emploi

📜 Scripts Utiles

10 scripts pour l'administration réseau : Cisco, ping sweep, scan de ports, VLAN.

📜 5 scripts 🟢 2 débutant 🔵 3 confirmé 🔴 0 expert
Ping sweep d'un sous-réseau
Débutant pingscanréseauinventaire

Scanne tous les hôtes d'un sous-réseau /24 et affiche les IPs qui répondent.

script
#!/bin/bash
# ─── Variables à modifier ───────────────────────────
RESEAU="192.168.1"    # Les 3 premiers octets
TIMEOUT=1             # Timeout ping en secondes
THREADS=50            # Nombre de pings parallèles
OUTPUT="/tmp/hosts_$(date +%Y%m%d).txt"
# ────────────────────────────────────────────────────

echo "Scan du réseau $RESEAU.0/24 en cours..."
echo ""

ACTIFS=0
> "$OUTPUT"

# Ping parallèle pour accélérer le scan
for i in $(seq 1 254); do
    (
        if ping -c 1 -W $TIMEOUT "$RESEAU.$i" &>/dev/null; then
            # Résolution du nom
            HOSTNAME=$(getent hosts "$RESEAU.$i" 2>/dev/null | awk '{print $2}')
            MAC=$(arp "$RESEAU.$i" 2>/dev/null | grep -oE '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}')
            echo "$RESEAU.$i ${HOSTNAME:-unknown} ${MAC:-}" | tee -a "$OUTPUT"
        fi
    ) &
    # Limiter les threads parallèles
    [ $(jobs -r | wc -l) -ge $THREADS ] && wait
done
wait

ACTIFS=$(wc -l < "$OUTPUT")
echo ""
echo "✅ $ACTIFS hôtes actifs sur $RESEAU.0/24"
echo "📄 Résultats : $OUTPUT"
Sauvegarde config Cisco IOS via TFTP
Confirmé ciscotftpbackupconfig

Se connecte à une liste de routeurs/switches Cisco via SSH et sauvegarde la running-config.

script
#!/bin/bash
# ─── Variables à modifier ───────────────────────────
EQUIPEMENTS=("192.168.1.1" "192.168.1.2" "192.168.1.254")
SSH_USER="admin"
SSH_PASS="cisco123"        # Mieux : utiliser des clés SSH
BACKUP_DIR="/backup/cisco/$(date +%Y%m%d)"
# ────────────────────────────────────────────────────

mkdir -p "$BACKUP_DIR"

for ip in "${EQUIPEMENTS[@]}"; do
    echo "🔧 Sauvegarde de $ip..."
    FILENAME="$BACKUP_DIR/${ip//./_}_$(date +%H%M).cfg"

    # Via sshpass + SSH (installer : apt install sshpass)
    sshpass -p "$SSH_PASS" ssh         -o StrictHostKeyChecking=no         -o ConnectTimeout=10         -o KexAlgorithms=+diffie-hellman-group14-sha1         -o HostKeyAlgorithms=+ssh-rsa         "$SSH_USER@$ip"         "show running-config" > "$FILENAME" 2>/dev/null

    if [ $? -eq 0 ] && [ -s "$FILENAME" ]; then
        LIGNES=$(wc -l < "$FILENAME")
        echo "  ✅ $FILENAME ($LIGNES lignes)"
    else
        echo "  ❌ Échec de connexion à $ip"
        rm -f "$FILENAME"
    fi
done

echo ""
echo "✅ Sauvegardes dans $BACKUP_DIR"
ls -lh "$BACKUP_DIR"
# Cron : 0 2 * * 0 /opt/scripts/backup_cisco.sh >> /var/log/backup_cisco.log 2>&1
Scan de ports (nmap alternatif)
Confirmé scanportsnmapsecurite

Scan rapide de ports TCP sur une IP ou plage d'IPs sans nécessiter nmap.

script
#!/bin/bash
# ─── Variables à modifier ───────────────────────────
CIBLE="192.168.1.10"
PORTS_COURANTS=(21 22 23 25 53 80 110 135 139 143 443 445 1433 3306 3389 5432 8080 8443)
TIMEOUT=2
# ────────────────────────────────────────────────────

echo "=== Scan de ports — $CIBLE ==="
echo "Début : $(date)"
echo ""

OUVERTS=()

for port in "${PORTS_COURANTS[@]}"; do
    # Test de connexion TCP non-bloquant
    (echo >/dev/tcp/$CIBLE/$port) 2>/dev/null &
    PID=$!
    sleep $TIMEOUT
    if kill -0 $PID 2>/dev/null; then
        kill $PID 2>/dev/null
        # Résolution service
        SERVICE=$(getent services $port/tcp 2>/dev/null | cut -d/ -f1)
        echo "❌ $port/tcp : fermé"
    else
        SERVICE=$(getent services $port/tcp 2>/dev/null | awk '{print $1}')
        echo "✅ $port/tcp OUVERT ${SERVICE:+(${SERVICE})}"
        OUVERTS+=($port)
    fi
done

echo ""
echo "Ports ouverts : ${#OUVERTS[@]} — ${OUVERTS[*]}"
echo "Fin : $(date)"

# Si nmap est disponible — scan plus précis
if command -v nmap &>/dev/null; then
    echo ""
    echo "=== Résultat nmap ==="
    nmap -sV -T4 --open -p"$(IFS=,; echo "${PORTS_COURANTS[*]}")" "$CIBLE"
fi
Monitoring latence réseau multi-cibles
Débutant pinglatencemonitoringréseau

Mesure la latence vers plusieurs cibles toutes les N secondes et alerte si trop élevée.

script
#!/bin/bash
# ─── Variables à modifier ───────────────────────────
CIBLES=("8.8.8.8:Google DNS" "1.1.1.1:Cloudflare" "192.168.1.1:Passerelle")
INTERVALLE=30         # Secondes entre les mesures
SEUIL_MS=100          # Alerte si latence > 100ms
LOG_FILE="/var/log/latence_reseau.log"
# ────────────────────────────────────────────────────

echo "Monitoring latence démarré — $(date)"
echo "Cibles : ${#CIBLES[@]} | Intervalle : ${INTERVALLE}s | Seuil : ${SEUIL_MS}ms"
echo "Ctrl+C pour arrêter"
echo ""

while true; do
    TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

    for cible_info in "${CIBLES[@]}"; do
        IP="${cible_info%%:*}"
        NOM="${cible_info##*:}"

        # Mesure latence moyenne sur 3 pings
        RESULT=$(ping -c 3 -W 2 "$IP" 2>/dev/null             | grep "round-trip\|rtt"             | awk -F'/' '{printf "%.1f", $5}')

        if [ -z "$RESULT" ]; then
            RESULT="TIMEOUT"
            STATUS="❌"
        elif (( $(echo "$RESULT > $SEUIL_MS" | bc -l) )); then
            STATUS="⚠️ "
        else
            STATUS="✅"
        fi

        LINE="$TIMESTAMP | $STATUS $NOM ($IP) : ${RESULT}ms"
        echo "$LINE"
        echo "$LINE" >> "$LOG_FILE"
    done
    echo "---"
    sleep $INTERVALLE
done
Diagnostic connexion VPN/réseau
Confirmé diagnosticVPNréseautroubleshooting

Script de diagnostic complet : interfaces, routes, DNS, connectivité vers des cibles critiques.

script
#!/bin/bash
echo "=== DIAGNOSTIC RÉSEAU COMPLET — $(hostname) — $(date) ==="
echo ""

echo "── Interfaces réseau ────────────────────────"
ip -br addr show | grep -v "^lo"
echo ""

echo "── Table de routage ─────────────────────────"
ip route show | head -10
echo ""

echo "── Passerelle par défaut ────────────────────"
GW=$(ip route | grep default | awk '{print $3}' | head -1)
echo "Passerelle : $GW"
if [ -n "$GW" ]; then
    ping -c 2 -W 2 "$GW" &>/dev/null && echo "✅ Joignable" || echo "❌ Injoignable"
fi
echo ""

echo "── Test DNS ─────────────────────────────────"
DNS=$(cat /etc/resolv.conf | grep nameserver | head -2 | awk '{print $2}')
for dns in $DNS; do
    echo -n "Serveur DNS $dns : "
    if dig @$dns google.com +short &>/dev/null; then
        echo "✅ Résolution OK"
    else
        echo "❌ Résolution KO"
    fi
done
echo ""

echo "── Connectivité Internet ────────────────────"
CIBLES=("8.8.8.8" "1.1.1.1" "google.com")
for c in "${CIBLES[@]}"; do
    ping -c 1 -W 3 "$c" &>/dev/null         && echo "✅ $c joignable"         || echo "❌ $c injoignable"
done
echo ""

echo "── Ports locaux en écoute ───────────────────"
ss -tlnp | grep LISTEN | awk '{print $4, $6}' | head -10

echo ""
echo "── Connexions VPN actives ───────────────────"
ip tuntap show 2>/dev/null || echo "Aucune interface TUN/TAP"
ip link show | grep -E "tun|tap|wg|vpn" || echo "Aucune interface VPN détectée"
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google