Как получить 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]'
ip -4 route list 0/0
возвращает что-то вроде:по умолчанию через 192.168.0.1 dev eth1 протостатическая метрика 100
мы получаем 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 ДОСТУПНО
- Теперь мы получаем пятое поле и делаем его заглавным:
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