Як отримати MAC-адресу мого маршрутизатора?


13

Чи є команда Linux, яка дозволяє мені отримати MAC-адресу мого маршрутизатора?


1
який? ваш маршрутизатор повинен мати кілька mac-адрес для обох сторін зв'язку (вхідні / вихідні).
mchid

Якщо це повинно входити в суперкористувача?

Відповіді:


6

Мені подобаються однолінійки:

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

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


Я спробував це (та інші відповіді). Вони дають добру інформацію, але показана MAC-адреса була вимкнена двома цифрами від того, що я шукав. Мій принтер перелічує два маршрутизатори з тим самим SSID (можливо, гостьовим і звичайним), і хоче, щоб я вибрав MAC-адресу. Ця відповідь askubuntu.com/a/222553 дає мені одну з двох перерахованих iwconfig | grep "Access Point"команд. Я думаю, що два, які були відключені двома, - це кешована версія дротового з'єднання, яку я відключив, щоб спробувати переконатися, що я отримую бездротовий маршрут.
hlongmore

10

Не використовуйте застарілі команди 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-адресу defaultIP-адреси маршрутизаторів, використовуйте ip neighта шукайте рядок із IP-адресою та MAC-адресою після lladdr.

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

4

Якщо ви не знаєте 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.


2
Відповідний однолінійний:arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Фалько

3

Ось один лайнер, який працює в 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 REACHABLE

  3. Тепер ми отримаємо п'яте поле і зробимо його великими літерами:

    CA: FE: BA: BE: BE: AF


2
Трохи більше пояснень допоможе решті з нас зрозуміти ваш сценарій!
Джордж Удосен

1
Для останнього рядка є функція Bash, яка розширює змінну до верхнього регістру:echo ${info[5]^^}
Девід Фоерстер

1
@DavidFoerster Я хотів написати портативну команду, але оригінальний варіант покладався на індексацію масиву, характерну для zsh (від однієї), тому я оновив відповідь варіантом, який переноситься між трьома найпопулярнішими оболонками
Grief

2

Це не повне рішення, але ви перевіряєте 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

Це не отримує MAC-адресу інтерфейсів на комп'ютері, а не маршрутизатор?
Вільф

2
Якщо ви пінг-роутера (скажіть ping 192.168.0.1), ви повинні мати його MAC-адресу в
архіві

дякую @ 2707974, але я не знаю ні mac-адреси, ні адреси ip, і я хочу мати команду, яка дасть мені лише ip-адресу або mac-адресу мого маршрутизатора, тому що я хочу використовувати команду в сценарії python для того, щоб показати весь арп таблиця для мене не корисна.
користувач4650183

2

Це вдосконалена версія відповіді Горе. 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]'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.