Je dois vérifier avec un script s'il eth0
est configuré. Si c'est le cas, le script ne fera rien. Sinon, cela commencera wlan0
. (Je ne veux pas les deux eth0
et wlan0
être debout en même temps).
Quelle serait la façon la plus simple de vérifier, si eth0
c'est déjà le cas?
J'utilise Debian Wheezy
CLARIFICATION:
Je voudrais vérifier non seulement que le câble eth0
est branché, mais plutôt que l'interface est configurée (c'est-à-dire qu'elle a un IP fixe ou qu'elle a reçu une IP DHCP). Si le câble est branché, mais eth0
n'est pas configuré correctement, je veux commencerwlan0
linux
networking
user1968963
la source
la source
cat /sys/class/net/ | grep eth0
je devrais vous donner des données facilement analysables. Vous pouvez aussi fairesudo ethtool eth0 | grep Link
Réponses:
Vous pouvez le faire de plusieurs façons. Voici un exemple:
la source
/sys/class/net/eth0/carrier
, pour vérifier un signal, mais il peut ne pas encore avoir de bail DHCP, etc.Si rien ne s'affiche alors votre interface est en panne
la source
Nous avons donc ici
grep
l'ip
outil omniprésentstdout
pour une ligne qui contient à la fois notre interface d'intérêt et la phrase "état UP" (merci à @Lekensteyn pour avoir souligné la nécessité d'un peu plus de spécificité que justeUP
). Nous utilisons l'argumenta
comme forme abrégée pouraddress
et cela devrait être suffisant pour obtenir une liste de toutes les cartes réseau configurées dans le système.Un avantage à utiliser
ip
pourrait être qu'il devrait vraiment être disponible partout - c'est ainsi que je configure couramment les périphériques réseau de mon téléphone Android, par exemple.Les
:colons
sont utilisés pour éviter les correspondances partielles - de cette façon, nous garantissons une correspondance poureth0
par opposition à une autre possibilitésomeothereth0
oueth007
.Merci @RaphaelAhrens de m'avoir poussé vers l'exactitude et d'expliquer ma solution.
MODIFIER:
Pour gérer les exigences actuelles, vous pouvez:
Ce qui précède n'imprimera une adresse IP CIDR que si votre cible
$if
est UP, branchée et en a une. Pour ipv6, la solution est tout aussi simple avec seulement des modifications mineures.Si vous n'aimez pas,
sed
vous pouvez obtenir des résultats similaires avec un autre|pipe ... grep
et ajouter une-A
option de contexte à la premièregrep
- mais j'aimesed
.la source
UP
si le dispositif est en place, mais pas de câble est connecté:2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. Vous pouvez également spécifier l'appareil pour éviter les faux positifs:ip addr show dev eth0
.Les autres méthodes ne fonctionnent pas, mais celle-ci le fait (sur Ubuntu au moins):
la source
ip route
sur Debian Stretch.