Existe-t-il une commande Linux qui me permet d'obtenir l'adresse MAC de mon routeur?
Existe-t-il une commande Linux qui me permet d'obtenir l'adresse MAC de mon routeur?
Réponses:
J'aime les one-liners:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arpingaffiche le MAC associé à l'adresse IP de la passerelle par défaut à partir de la sortie de ip route show match 0/0, analysé par awk.
iwconfig | grep "Access Point"commande. Je pense que celle qui était coupée par deux était la version en cache de la connexion filaire, que j'ai débranchée pour essayer de m'assurer d'obtenir la route sans fil.
N'utilisez pas les commandes obsolètes ifconfig(8), arp(8) ou route(8). Utilisez la nouvelle commande qui les remplace et peut faire plus, ip(8).
Utilisez ip route listpour voir quel defaultrouteur votre machine a. Cela devrait être une ligne commençant par default(ou 0.0.0.0) et ayant l'adresse IP du routeur après. Si vous utilise IPv6, ajoutez simplement le -6commutateur ip -6 route list.
default via 192.168.11.1 dev eth0 proto static
Pour voir l'adresse MAC de l' defaultadresse IP du routeur, utilisez ip neighet recherchez la ligne avec l'adresse IP et l'adresse MAC après lladdr.
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Si vous ne connaissez pas l'IP de votre routeur, c'est probablement votre passerelle que vous pouvez obtenir à partir de la routecommande :
$ 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. L'adresse dans la Gatewaycolonne de cette ligne est celle que vous recherchez. Suivez ensuite la suggestion de 2707974 avec arp -n( envoyez une requête ping à l'adresse IP si elle n'apparaît 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.
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Voici une doublure qui fonctionne dash, bashet 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 renvoie quelque chose comme:
par défaut via 192.168.0.1 dev eth1 proto statique métrique 100
nous obtenons l'IP de cette ligne comme troisième champ avec cutet la ligne grep contenant cette IP et l'espace immédiat après la sortie du voisinage réseau. (un espace est nécessaire pour éviter la correspondance 192.168.0.1avec 192.168.0.10), la ligne correspondante ressemblerait à quelque chose comme:
192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af REACHABLE
CA: FE: BA: BE: BE: AF
echo ${info[5]^^}
N'est pas une solution complète, mais vous cochez 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), vous devriez alors avoir son adresse MAC sur le cache arp ...
Il s'agit d'une version améliorée de la réponse de Grief. Il est possible pour ip -4 route list 0/0 de renvoyer plus d'une ligne (IP), auquel cas la ligne complète ne fonctionne pas. Ainsi, la version modifiée suivante utilise uniquement la première ligne renvoyée par la liste de routes ip -4 0/0.
ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'