Existe-t-il une commande Linux qui me permet d’obtenir l’adresse MAC de mon routeur?
J'aime les one-liners:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
indique le code MAC associé à l'adresse IP de passerelle par défaut à partir du résultat de ip route show match 0/0
, analysé par awk
.
N'utilisez pas les commandes obsolètes ifconfig
(8), arp
(8) ou route
(8). Utilisez la nouvelle commande qui les remplace et pouvez en faire davantage, ip
(8).
Utilisez ip route list
pour voir le routeur default
de votre ordinateur. Cela devrait être une ligne qui commence par default
(ou 0.0.0.0
) et l’adresse IP du routeur après. Si vous utilisez IPv6, ajoutez simplement le commutateur -6
, ip -6 route list
.
default via 192.168.11.1 dev eth0 proto static
Pour voir l'adresse MAC de l'adresse IP du routeur default
, utilisez ip neigh
et recherchez la ligne avec l'adresse IP et l'adresse MAC après le lladdr
.
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Si vous ne connaissez pas l'adresse IP de votre routeur, c'est probablement votre passerelle que vous pouvez obtenir à partir de la commande route
name__ :
$ 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
Notez la ligne avec les drapeaux UG
name__. Vous cherchez l'adresse dans la colonne Gateway
de cette ligne. Suivez ensuite suggestion de 2707974 avec arp -n
(envoyez une requête ping à l'adresse IP si elle ne s'affiche pas au début) et recherchez la ligne correspondante:
$ 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
Ici, le MAC de votre routeur serait 00:11:22:33:44:55
.
Voici une ligne qui fonctionne dans dash
name__, bash
et zsh
name__:
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
renvoie quelque chose comme:
valeur par défaut via 192.168.0.1 dev eth1 métrique statique statique 100
nous obtenons l'adresse IP de cette ligne en tant que troisième champ avec cut
et la ligne grep contenant cette adresse IP et l'espace immédiatement après à partir de la sortie du voisinage réseau. (un espace est nécessaire pour éviter la correspondance de 192.168.0.1
avec 192.168.0.10
), la ligne correspondante serait quelque chose comme:
192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af ATTEINDRE
CA: FE: BA: BE: BE: AF
Ce n'est pas une solution complète, mais vous vérifiez 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
Ceci est une version améliorée de la réponse de Grief. Il est possible que ip -4 route list 0/0 renvoie plus d'une ligne (IP), auquel cas la ligne complète ne fonctionne pas. La version modifiée suivante utilise donc uniquement la première ligne renvoyée par ip -4 liste de routes 0/0.
ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'