Muszę sprawdzić za pomocą skryptu, czy eth0
jest skonfigurowany. Jeśli tak, skrypt nic nie zrobi. W przeciwnym razie zacznie się wlan0
. (Nie chcę zarówno eth0
i wlan0
być w tym samym czasie).
Jaki byłby najłatwiejszy sposób sprawdzenia, czy eth0
już działa?
Używam Debian Wheezy
WYJAŚNIENIE:
Chciałbym sprawdzić nie tylko, czy kabel eth0
jest podłączony, ale raczej interfejs jest skonfigurowany (tj. Ma ustawiony statyczny adres IP lub otrzymał adres IP DHCP). Jeśli kabel jest podłączony, ale eth0
nie jest poprawnie skonfigurowany, chcę zacząćwlan0
linux
networking
użytkownik1968963
źródło
źródło
cat /sys/class/net/ | grep eth0
powinienem dać ci łatwo parsowalne dane. Możesz także zrobićsudo ethtool eth0 | grep Link
Odpowiedzi:
Możesz to zrobić na wiele sposobów. Oto przykład:
źródło
/sys/class/net/eth0/carrier
, aby sprawdzić sygnał, ale wciąż może nie mieć dzierżawy DHCP itp.Jeśli nic się nie wyświetla, oznacza to, że interfejs jest wyłączony
źródło
Tak więc tutaj jesteśmy
grep
wszechobecnymip
narzędziemstdout
dla linii, która zawiera zarówno nasz interesujący interfejs, jak i zwrot „stan UP” (dzięki @Lekensteyn za wskazanie potrzeby nieco większej szczegółowości niż tylkoUP
). Używamy tego argumentua
jako krótkiego formularza,address
który powinien wystarczyć, aby uzyskać listę wszystkich skonfigurowanych kart sieciowych w systemie.Jedną z zalet używania
ip
może być to, że naprawdę powinien być dostępny wszędzie - w ten sposób na przykład często konfiguruję urządzenia sieciowe mojego telefonu z Androidem.Służą
:colons
one do unikania częściowych dopasowań - w ten sposób gwarantujemy dopasowanie do,eth0
a nie do innych możliwychsomeothereth0
lubeth007
.Dzięki @RaphaelAhrens za popychanie mnie do poprawności i wyjaśnianie mojego rozwiązania.
EDYTOWAĆ:
Aby obsłużyć obecne wymagania, możesz:
Powyżej wydrukuje adres IP CIDR tylko wtedy, gdy twój cel
$if
jest włączony , podłączony i ma go. W przypadku ipv6 rozwiązanie jest równie proste z niewielkimi modyfikacjami.Jeśli ci się nie podoba,
sed
możesz osiągnąć podobne wyniki z innym|pipe ... grep
i dodając-A
opcję kontekstową do pierwszegogrep
- ale lubięsed
.źródło
UP
wtedy, gdy urządzenie jest w górę, ale nie jest podłączony kabel:2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. Można także określić urządzenie, aby uniknąć fałszywych alarmów:ip addr show dev eth0
.Inne metody nie działają, ale ta działa (przynajmniej na Ubuntu):
źródło
ip route
Debian Stretch nie ma „linkdown” do grep .