Как получить MAC-адрес моего маршрутизатора?

Есть ли команда Linux, которая позволяет мне получить MAC-адрес моего маршрутизатора?

6 ответов

Решение

Мне нравятся однострочники:

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

arping показывает MAC, связанный с IP-адресом шлюза по умолчанию с выхода ip route show match 0/0проанализировано awk,

Не используйте устаревшие команды ifconfig(8), arp(8) или route(8). Используйте новую команду, которая заменит их и может сделать больше, ip(8).

использование ip route list чтобы увидеть, какой default роутер на твоей машине есть. Это должна быть строка, которая начинается с default (или же 0.0.0.0) и иметь IP-адрес маршрутизатора после. Если вы используете IPv6, просто добавьте -6 переключатель, ip -6 route list,

default via 192.168.11.1 dev eth0  proto static 

Чтобы увидеть MAC-адрес default IP-адрес маршрутизатора, используйте ip neigh и найдите строку с IP-адресом и MAC-адресом после lladdr,

192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE

Если вы не знаете IP-адрес вашего маршрутизатора, скорее всего это ваш шлюз, который вы можете получить из 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

Обратите внимание на строку с флагами UG, Адрес в Gateway столбец этой строки - это то, что вы ищете. Затем следуйте предложению 2707974 с arp -n (пингуйте IP, если он не появляется сначала), и найдите соответствующую строку:

$ 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

Здесь MAC вашего маршрутизатора будет 00:11:22:33:44:55,

Вот один вкладыш, который работает в dash, bash а также 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 возвращает что-то вроде:

    по умолчанию через 192.168.0.1 dev eth1 протостатическая метрика 100

  2. мы получаем IP из этой линии в качестве третьего поля с cut и строка grep, содержащая этот IP-адрес и непосредственно после него выход из сетевого окружения. (требуется место, чтобы избежать совпадения 192.168.0.1 с 192.168.0.10), подобранная строка будет выглядеть примерно так:

    192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af ДОСТУПНО

  3. Теперь мы получаем пятое поле и делаем его заглавным:

    CA: FE: BA: BE: BE: AF

Это улучшенная версия ответа Горе. Для списка маршрутов ip -4 0/0 возможно возвращение более одной строки (IP), и в этом случае полный один вкладыш не работает. Поэтому следующая модифицированная версия использует только первую строку, которую возвращает список маршрутов 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]'

Это не полное решение, но вы проверяете 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
Другие вопросы по тегам