Mam eth0 i wlan0 zgodnie z ifconfig i mogę ping google.com
. Jak mogę dowiedzieć się (z normalnym użytkownikiem, nie rootem), który interfejs jest aktywny , ponieważ w jakim interfejsie używał ping (lub cokolwiek, ping nie jest obowiązkowy)?
UWAGA: używając Ubuntu 11.04 lub Fedora 14
Odpowiedzi:
Możesz użyć,
route
aby znaleźć domyślną trasę:Iface
Kolumna w wierszu z przeznaczeniadefault
informuje interfejs, który jest używany.źródło
route
nie można go użyć. @Torgeir ma odpowiedź wrighta.192.168.1.0...
to trasa, która zostanie użyta. Oczywiście w tym przypadku odnosi się do tego samego Iface, ale dzieje się tak tylko dlatego, że masz jeden interfejs na swoim komputerze.Moja wersja, która jest w zasadzie oparta na tym i tym :
A to eksperymentalnie dla macOS:
źródło
route |awk '/^default/{print $NF}'
W systemach GNU / Linux:
źródło
host
jest argumentem wejściowym do skryptu. Ponieważ trasa (i stąd interfejs) może być różna dla różnych IP.Bieganie
ifconfig
zapewni ci potrzebne informacje.Aktywny interfejs będzie miał
inet addr
i wyświetli zapis przesłanych danych, taki jak:Można również użyć
ip addr
polecenia oraz wszelkie nieaktywne interfejsy zostaną oznaczone jako mające:NO-CARRIER
.źródło
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
route
polecenia, choć niekoniecznie byłoby to niezawodne ze względu na routing. Domyślna trasa nie musi być tą, która umożliwia dostęp do Internetu, choć często może być.Jedna wkładka:
ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\) table.*/\1/p'
źródło
Uzyskaj domyślny interfejs sieciowy zwykle używany do kierowania do „pozostałego” Internetu w przeciwieństwie do DMZ, sieci prywatnej, hosta VM itp., Które są zwykle kierowane jawnie.
źródło
ip -4 route ls |awk '/^default/{print $5}'
Polecenie
ip route ls
wyświetli listę aktywnych tras i ich źródeł:źródło
Użyj polecenia:
źródło
użyj poniższego:
źródło
Jeśli twój komputer ma wiele interfejsów (co zakładam), nie ma jednego interfejsu, który będzie używany do łączenia się z Internetem.
W zależności od miejsca docelowego, z którym się łączysz, twój system sprawdzi tabelę ip (tę pokazaną po wykonaniu
route
polecenia), aby znaleźć następną nadzieję / router, gdy ją znajdzie, użyje interfejsu z nią powiązanego.To powiedziawszy, należy zapoznać się @ Torgeir za odpowiedź , jak to robi dokładnie to:
źródło