Jedno zastrzeżenie z moją odpowiedzią (dotyczy również większości pozostałych): nie znam celu twojej aplikacji. Jeśli jest to aplikacja jednorazowa, która rozwiązuje jeden konkretny problem lub lepiej rozumie sieć, nigdy więcej nie będzie używana, to poleganie na pierwszej literze interfejsu może być świetną szybką i brudną opcją. Jeśli planujesz napisać kolejnego konkurenta do Wireshark lub tcpdump, musisz upewnić się, że masz rację.
A jeśli pisana przez Ciebie aplikacja znajduje się gdzieś pomiędzy tymi skrajnościami, tylko Ty (i Twoi klienci) możesz wiedzieć, jak ostrożnie musisz wdrożyć swoją logikę.
Inni wskazywali już, że nazwy te nigdy nie są wiarygodne z wielu powodów. Ostateczny problem jest bardzo powszechny w oprogramowaniu: założenia zakodowane na stałe zamiast polegać na znanych / udokumentowanych faktach.
Drugi problem, o którym nie wspomniano, opiera się również na założeniu o twoich wymaganiach: lista interfejsów, które chcesz wymienić, to zawsze dokładnie „sprzętowe interfejsy Ethernet” i „interfejsy Wi-Fi”.
Trzecia kwestia to kolejne założenie: że cały interfejs będzie należał do kategorii, o których możesz teraz pomyśleć. Co powiesz na Infiniband, o którym wspomniał @ user4556274? Co powiesz na interfejsy tunelowe dla VPN? Co powiesz na zmostkowane interfejsy? Co powiesz na pomostowe interfejsy łączące interfejsy fizyczne i logiczne?
Ale mogą istnieć opcje, aby osiągnąć to, czego szukasz. Najpierw zdefiniuj dokładnie, co charakteryzuje interfejs, który chcesz wyświetlić, a nie interfejs, którego nie chcesz.
W większości przypadków jedną z cech, na których można polegać, jest tablica routingu (będzie to jednak działać tylko wtedy, gdy interfejs jest włączony, więc może nie być tym, czego tak naprawdę szukasz).
Każdy interfejs, który ma domyślną trasę (tj. Trasę do 0.0.0.0), prawdopodobnie będzie tym, którego szukasz.
Zauważ, że nawet to wciąż opiera się na założeniu, po prostu bardziej niezawodnym: można sobie wyobrazić, że system jest skonfigurowany do kierowania całego ruchu wychodzącego przez maszynę wirtualną lub kontener dokujący (na przykład, jeśli istnieje kontener z zaporą ogniową ). Jest też odwrotnie: administrator systemu może potencjalnie zablokować ruch zewnętrzny, usuwając domyślną trasę.
Inną opcją jest obejście rzeczywistego sprzętu i sprawdzenie, którego sterownika używa. Następnie możesz wykluczyć niektóre dobrze znane sterowniki