Wie erhalte ich die MAC-Adresse meines Routers?

13

Gibt es einen Linux-Befehl, mit dem ich die MAC-Adresse meines Routers abrufen kann?

user4650183
quelle
1
welcher? Ihr Router sollte mehrere Mac-Adressen für beide Kommunikationsseiten (eingehend / ausgehend) haben.
Mchid
Sollte dies in Super User gehen?

Antworten:

6

Ich mag Einzeiler:

arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')

arpingZeigt den MAC an, der der Standard-Gateway-IP-Adresse aus der Ausgabe von zugeordnet ist ip route show match 0/0, analysiert von awk.

Eric Carvalho
quelle
Ich habe es versucht (und andere Antworten). Sie geben gute Informationen, aber die angezeigte MAC-Adresse war zweistellig von dem entfernt, wonach ich gesucht habe. Mein Drucker listet zwei Router mit derselben SSID auf (wahrscheinlich Gast und regulär) und möchte, dass ich nach MAC-Adresse auswähle. Diese Antwort askubuntu.com/a/222553 gibt mir eine der beiden aufgelisteten mit dem iwconfig | grep "Access Point"Befehl. Ich denke, diejenige, die um zwei ausgeschaltet war, war die zwischengespeicherte Version der Kabelverbindung, die ich ausgesteckt habe, um sicherzustellen, dass ich die drahtlose Route erhalten habe.
Hlongmore
10

Verwenden Sie nicht die veralteten Befehle ifconfig(8), arp(8) oder route(8). Verwenden Sie den neuen Befehl, der sie ersetzt und mehr kann ip(8).

Verwenden ip route listSie diese defaultOption, um festzustellen, über welchen Router Ihr Computer verfügt. Das sollte eine Zeile sein, die mit default(oder 0.0.0.0) beginnt und danach die IP-Adresse zum Router hat. Wenn Sie IPv6 verwenden, fügen Sie einfach den -6Schalter hinzu ip -6 route list.

default via 192.168.11.1 dev eth0  proto static 

Um die MAC-Adresse der defaultIP-Adresse des Routers anzuzeigen, verwenden Sie ip neighdie Zeile mit der IP-Adresse und der MAC-Adresse und suchen Sie danach lladdr.

192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Anders
quelle
4

Wenn Sie die IP Ihres Routers nicht kennen, ist es höchstwahrscheinlich Ihr Gateway, das Sie über den folgenden routeBefehl erhalten können :

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Beachten Sie die Linie mit den Flags UG. Die Adresse in der GatewaySpalte dieser Zeile ist genau das, wonach Sie suchen. Dann folgen 2707974 Vorschlag mit arp -n(ping die IP , wenn es nicht auf den ersten nicht angezeigt) und die passende Zeile finden:

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   00:11:22:33:44:55   C                     eth0
192.168.0.2              ether   66:77:88:99:aa:bb   C                     eth0

Hier wäre der MAC Ihres Routers 00:11:22:33:44:55.

glibdud
quelle
2
Der entsprechende arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Falko
3

Hier ist ein Einzeiler, der funktioniert dash, bashund zsh:

ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
  1. ip -4 route list 0/0 gibt so etwas zurück wie:

    Standard über 192.168.0.1 dev eth1 protostatische Metrik 100

  2. Wir erhalten IP von dieser Zeile als drittes Feld mit cutund grep-Zeile, die diese IP und den unmittelbaren Speicherplatz danach von der Ausgabe der Netzwerkumgebung enthält. (Platz ist erforderlich, um eine Übereinstimmung 192.168.0.1mit zu vermeiden 192.168.0.10), die übereinstimmende Linie wäre ungefähr so:

    192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af REACHABLE

  3. Jetzt bekommen wir das fünfte Feld und machen es in Großbuchstaben:

    CA: FE: BA: BE: BE: AF

Trauer
quelle
2
Ein bisschen mehr Erklärung würde dem Rest von uns helfen, Ihr Skript zu verstehen!
George Udosen
1
Für die letzte Zeile gibt es eine Bash-Funktion, die eine Variable auf Großbuchstaben erweitert:echo ${info[5]^^}
David Foerster
@ DavidFoerster Ich wollte einen tragbaren Befehl schreiben, aber die ursprüngliche Variante stützte sich auf die Array-Indizierung für zsh (von einer), daher habe ich die Antwort mit der tragbaren Variante zwischen drei beliebtesten Shells aktualisiert
Grief
2

Ist keine vollständige Lösung, aber Sie überprüfen arp -n.

ddd@mmm ~ $ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.xxx          ether   00:e0:1e:b4:12:42   C                     eth0
yyy.yyy.yyy.yyy          ether   00:14:78:52:28:d2   C                     wlan0
2707974
quelle
Erhält dies nicht die MAC-Adresse der Schnittstellen auf dem Computer, nicht den Router?
Wilf
2
Wenn Sie Ihren Router ping 192.168.0.1anpingen (sagen wir ), sollten Sie seine MAC-Adresse im Arp-Cache haben ...
Rmano
danke @ 2707974 aber ich weiß nicht, keine Mac-Adresse keine Adresse IP und ich möchte einen Befehl haben, der mir nur die IP-Adresse oder Mac-Adresse meines Routers gibt, weil ich den Befehl in einem Skript-Python für diese Show All Arp verwenden möchte Tabelle ist für mich nicht nützlich.
user4650183
1

Dies ist eine verbesserte Version von Griefs Antwort. Es ist möglich, dass die IP-4-Routenliste 0/0 mehr als eine Zeile (IP) zurückgibt. In diesem Fall funktioniert der gesamte Einzeiler nicht. Die folgende modifizierte Version verwendet also nur die erste Zeile, die die IP-4-Routenliste 0/0 zurückgibt.

ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
Schtibb
quelle