Wykrywanie nazwy urządzenia sieciowego w bash?

12

Usiłuję wyłudzić hack, który wyświetli nazwę aktywnych urządzeń sieciowych na komputerze przez bash. Robię to do pracy. Jak mam to zrobić? Nie chcę po prostu używać „wlan0”, „eth0” ani żadnego z tych ogólnych badziewów, ponieważ niektóre systemy operacyjne używają różnych nazw (na przykład pfSense).

Brandon
źródło

Odpowiedzi:

28

Zależy to od tego, co rozumiesz przez „aktywne” - jeśli chcesz tylko zobaczyć nazwy wszystkich urządzeń sieciowych w systemie, możesz spojrzeć na zawartość katalogu / sys / class / net np.

$ ls /sys/class/net
eth0  lo  wlan0

Aby zobaczyć status, możesz użyć ippolecenia na dowolnych linkobiektach - możesz przeanalizować dane wyjściowe, aby uzyskać określone pola, które chcesz np. Zobaczyć tylko nazwę i stan urządzenia

$ ip -o link show | awk '{print $2,$9}'
lo: UNKNOWN
eth0: DOWN
wlan0: UP

Jeśli korzystasz z nowoczesnej wersji Ubuntu na komputery stacjonarne (z interfejsami zarządzanymi przez usługę menedżera sieci), możesz uzyskać podobną listę statusu urządzeń, używając nmcli

$ nmcli dev status
DEVICE     TYPE              STATE
wlan0      802-11-wireless   connected
eth0       802-3-ethernet    unavailable

lub, aby ograniczyć dane wyjściowe do określonych pól w sposób łatwiejszy do użycia w skrypcie

$ nmcli --terse --fields DEVICE,STATE dev status
wlan0:connected
eth0:unavailable

Jeśli korzystasz z menedżera sieci, możesz również uzyskać dostęp do właściwości urządzenia i połączenia przez DBUS - patrz na przykład samouczek Dbus - Zabawa z Network Managerem

steeldriver
źródło
2

Możesz użyć ifconfigdo wykrycia aktywnych urządzeń sieciowych, dla nieco mniejszego wykorzystania wyjścia ifconfig -s. ifconfigdrukuje aktywne interfejsy, dzięki -aczemu można wydrukować wszystkie interfejsy, które są rozpoznawane przez system jako interfejsy sieciowe.

Lub użyj ip addr.

chaos
źródło
0

Być może nie znam odpowiedzi bezpośrednio, ale dam ci listę poleceń sieciowych i może stamtąd możesz spróbować połączyć ją z tym, co musisz zrobić.

Aby wyświetlić sieci i wypisać nazwę aktywnych urządzeń sieciowych na jednym komputerze, możesz wypróbować następujące polecenia:

ifconfig

To polecenie pozwala nam wykryć aktywne urządzenia sieciowe. Możesz także użyć komendy ifconfig -s do mniejszego wykorzystania danych wyjściowych. Możesz użyć tego polecenia, aby skonfigurować określony interfejs

ip addr

To polecenie pozwala nam przeglądać informacje o sieci.

tcpdump

To polecenie to sniffer sieciowy. Przechwytuje pakiety z interfejsu sieciowego i interpretuje je dla Ciebie.

Jeśli kiedykolwiek otrzymasz wiadomość o odmowie pozwolenia, po prostu: **gksu yourcommand**aby uzyskać uprawnienia roota i wymusić polecenie.

findsmb

Za pomocą tego polecenia można wyświetlić informacje o komputerach, które odpowiadają na zapytania o nazwy SMB.

Źródło: http://www.gymforgeeks.com/topic/358445-/

Mike Wentworth
źródło