Como obtenho o endereço MAC do meu roteador?

4

Existe um comando do Linux que me permite obter o endereço MAC do meu roteador?

    
por user4650183 04.04.2015 / 18:39

6 respostas

1

Eu gosto de one-liners:

arping -f -I $(ip route show match 0/0 | awk '{print , }')

arping mostra o MAC associado ao endereço IP do gateway padrão da saída de ip route show match 0/0 , analisada por awk .

    
por Eric Carvalho 05.04.2015 / 00:36
5

Não use os comandos obsoletos ifconfig (8), arp (8) ou route (8). Use o novo comando que os substitui e pode fazer mais, ip (8).

Use ip route list para ver qual default de roteador sua máquina possui. Essa deve ser uma linha que comece com default (ou 0.0.0.0 ) e tenha o endereço IP para o roteador depois. Se você usa o IPv6, basta adicionar a opção -6 , ip -6 route list .

default via 192.168.11.1 dev eth0  proto static 

Para ver o endereço MAC do endereço IP dos default de roteadores, use ip neigh e procure a linha com o endereço IP e o endereço MAC após lladdr .

192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
    
por Anders 07.04.2015 / 02:54
4

Se você não sabe o IP do seu roteador, provavelmente é o seu gateway que você pode obter do comando route :

$ 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

Anote a linha com os sinalizadores UG . O endereço na coluna Gateway dessa linha é o que você está procurando. Em seguida, siga a sugestão do 2707974 com arp -n (execute ping no IP se ele não aparecer primeiro) e encontre o linha de correspondência:

$ 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

Aqui, o MAC do seu roteador seria 00:11:22:33:44:55 .

    
por glibdud 04.04.2015 / 22:16
2

Não é uma solução completa, mas você verifica 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
    
por 2707974 04.04.2015 / 18:49
2

Aqui está o one-liner, que funciona em dash , bash e zsh :

ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
  1. ip -4 route list 0/0 retorna algo como:

      

    padrão via 192.168.0.1 dev eth1 métrica estática 100

  2. obtemos IP dessa linha como terceiro campo com cut e grep contendo esse IP e espaço imediato após a saída da vizinhança da rede. (o espaço é necessário para evitar a correspondência de 192.168.0.1 com 192.168.0.10 ), a linha correspondente seria algo como:

      

    192.168.0.1 dev eth1 lladdr ca: fe: ba: ser: ser: af REACHHABLE

  3. Agora chegamos ao quinto campo e o transformamos em maiúsculas:
      

    CA: FE: BA: BE: BE: AF

por Grief 22.03.2017 / 12:49
1

Esta é uma versão melhorada da resposta do Grief. É possível que a lista de roteamento ip -4 0/0 retorne mais de uma linha (IP), caso em que o liner completo não funciona. Portanto, a seguinte versão modificada usa apenas a primeira linha que a lista de rotas ip 0/0 retorna.

ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
    
por Schtibb 30.06.2017 / 10:58