Gibt es einen Linux-Befehl, mit dem ich die MAC-Adresse meines Routers abrufen kann?
Gibt es einen Linux-Befehl, mit dem ich die MAC-Adresse meines Routers abrufen kann?
Antworten:
Ich mag Einzeiler:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
Zeigt den MAC an, der der Standard-Gateway-IP-Adresse aus der Ausgabe von zugeordnet ist ip route show match 0/0
, analysiert von awk
.
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.
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 list
Sie diese default
Option, 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 -6
Schalter hinzu ip -6 route list
.
default via 192.168.11.1 dev eth0 proto static
Um die MAC-Adresse der default
IP-Adresse des Routers anzuzeigen, verwenden Sie ip neigh
die 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
Wenn Sie die IP Ihres Routers nicht kennen, ist es höchstwahrscheinlich Ihr Gateway, das Sie über den folgenden route
Befehl 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 Gateway
Spalte 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
.
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Hier ist ein Einzeiler, der funktioniert dash
, bash
und zsh
:
ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
ip -4 route list 0/0
gibt so etwas zurück wie:
Standard über 192.168.0.1 dev eth1 protostatische Metrik 100
Wir erhalten IP von dieser Zeile als drittes Feld mit cut
und 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.1
mit 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
CA: FE: BA: BE: BE: AF
echo ${info[5]^^}
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
ping 192.168.0.1
anpingen (sagen wir ), sollten Sie seine MAC-Adresse im Arp-Cache haben ...
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]'