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}')
arping
affiche 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 list
pour voir quel default
routeur 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 -6
commutateur ip -6 route list
.
default via 192.168.11.1 dev eth0 proto static
Pour voir l'adresse MAC de l' default
adresse IP du routeur, utilisez ip neigh
et 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 route
commande :
$ 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 Gateway
colonne 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
, bash
et 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 cut
et 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.1
avec 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]'