Vérifiez si le câble réseau est branché sans mettre l'interface en place


9

J'essaie d'identifier les NIC sur ~ 20 serveurs distants (2-6 NIC sur chaque serveur). Pour commencer, je veux identifier ceux qui sont prêts à l'emploi et ceux gratuits. Comment puis-je vérifier l'état du support physique? Je connais des moyens, y compris ifconfig|grep RUNNING, ethtool, cat /sys/class/net/eth0/carriermais tout ce qu'ils exigent que l'interface est en place. Je ne veux pas afficher TOUTES les interfaces. Je ne sais pas pourquoi, mais je n'aime pas avoir activé, mais pas configuré les interfaces dans le réseau. Existe-t-il un moyen d'éviter cela?

Ou je me trompe et il n'y a rien de mal à ce que toutes les interfaces soient en place (et non configurées)? Même s'ils sont branchés?

Réponses:


5

ip link show, affiche par défaut toutes les interfaces, utilisez ip link show uppour afficher uniquement les interfaces en cours d'exécution. Vous pouvez utiliser des filtres pour faire la différence.


Aha. Et le câble manquant apparaîtra comme NO-CARRIER, non?
minaev

Bingo. Merci. Et ip addr showajoute même des adresses IP à la sortie.
minaev

2
Cela ne fonctionne pas sur ma machine (Debian squeeze, skge driver): n'affiche ip link showrien de plus que «DOWN». iprapporte les mêmes informations que ifconfiget /sys/class/net/dans tous les cas, non? Obtenez-vous des informations sur l'état des liens ipdifférentes de celles que vous obtenez sous /sys/class/netou ifconfigsur votre machine? Ou obtenez-vous l'état des liens sur les interfaces qui sont en panne /sys/class/net(je reçois /sys/class/net/eth0/carrier: Invalid argument)?
Gilles 'SO- arrête d'être méchant'

cela ne fonctionne pas si l'interface est en panne.
Vladimir Kunschikov

@Nikhil Mulley Qu'entendez-vous par filtres?
Joe

2

Voici mon script pour mettre à jour les routes par défaut en fonction de l'état de la connexion en temps réel . (s'exécute en arrière-plan) fonctionne avec plusieurs interfaces, je définis les priorités dans les /tmp/${iface}.metricfichiers, la «meilleure» interface connectée sera utilisée pour acheminer le trafic par défaut.

#!/bin/sh

/sbin/ip monitor link | while read -r line
do
    iface=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*/\1/p')
    state=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*/\2/p')
    if [ "$iface" != "" ] ; then
        echo "$iface is $state"
        if [ -f /tmp/${iface}.metric ] ; then
                echo "updating default route for ${iface}"
                if [ "$state" = "DOWN" ] ; then
                        ip route del default dev "${iface}"
                else
                        ip route add default dev "${iface}" metric `cat /tmp/${iface}.metric`
                fi
        fi
    fi
done

0

ip link show affiche le drapeau "LOWER_UP" pour indiquer que le câble est branché. Vous pouvez également rechercher / sys / class / net / eth * / operstate ou carrier. Cependant, tous ces éléments ne fonctionnent que pour une interface avec une adresse IP liée.


1
Des informations intéressantes, mais ne répondent pas vraiment au message d'origine.
X Tian

même si je n'ai pas de plugin eth, il dira aussi "up".
kangear
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.