¿Hay algún comando de Linux que me permita obtener la dirección MAC de mi enrutador?
¿Hay algún comando de Linux que me permita obtener la dirección MAC de mi enrutador?
Respuestas:
Me gustan las frases sencillas:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
muestra el MAC asociado con la dirección IP de la puerta de enlace predeterminada de la salida de ip route show match 0/0
, analizada por awk
.
iwconfig | grep "Access Point"
comando. Creo que el que estaba apagado por dos era la versión en caché de la conexión por cable, que desconecté para tratar de asegurarme de que estaba obteniendo la ruta inalámbrica.
No use los comandos obsoletos ifconfig
(8), arp
(8) u route
(8). Use el nuevo comando que los reemplaza y puede hacer más, ip
(8).
Use ip route list
para ver qué default
enrutador tiene su máquina. Esa debería ser una línea que comience con default
(o 0.0.0.0
) y tenga la dirección IP en el enrutador después. Si utiliza IPv6, sólo tiene que añadir el -6
interruptor, ip -6 route list
.
default via 192.168.11.1 dev eth0 proto static
Para ver la dirección MAC de la default
dirección IP de los enrutadores, use ip neigh
y busque la línea con la dirección IP y la dirección MAC después lladdr
.
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Si no conoce la IP de su enrutador, lo más probable es que sea su puerta de enlace que puede obtener del route
comando :
$ 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
Tenga en cuenta la línea con las banderas UG
. La dirección en la Gateway
columna de esa línea es lo que está buscando. Luego siga la sugerencia de 2707974 con arp -n
(haga ping a la IP si no aparece al principio) y encuentre la línea correspondiente:
$ 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
Aquí, el MAC de su enrutador sería 00:11:22:33:44:55
.
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Aquí hay una línea que funciona dash
, bash
y 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
devuelve algo como:
predeterminado a través de 192.168.0.1 dev eth1 proto static metric 100
obtenemos IP de esa línea como tercer campo con una cut
línea grep que contiene esa IP y espacio inmediato después de la salida del entorno de red. (se requiere espacio para evitar la coincidencia de 192.168.0.1
con 192.168.0.10
), la línea coincidente sería algo así como:
192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af REACHABLE
CA: FE: BA: BE: BE: AF
echo ${info[5]^^}
No es una solución completa, pero verificas 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
), entonces debería tener su dirección MAC en el caché de arp ...
Esta es una versión mejorada de la respuesta de Grief. Es posible que la lista de rutas ip -4 0/0 devuelva más de una línea (IP), en cuyo caso el revestimiento completo no funciona. Entonces, la siguiente versión modificada solo usa la primera línea que devuelve la lista de rutas 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]'