Чи є команда Linux, яка дозволяє мені отримати MAC-адресу мого маршрутизатора?
Чи є команда Linux, яка дозволяє мені отримати MAC-адресу мого маршрутизатора?
Відповіді:
Мені подобаються однолінійки:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arpingпоказує MAC, пов'язаний з IP-адресою шлюзу за замовчуванням з виходу ip route show match 0/0, розібраного awk.
iwconfig | grep "Access Point"команд. Я думаю, що два, які були відключені двома, - це кешована версія дротового з'єднання, яку я відключив, щоб спробувати переконатися, що я отримую бездротовий маршрут.
Не використовуйте застарілі команди 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
Якщо ви не знаєте 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.
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Ось один лайнер, який працює в 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 REACHABLE
CA: FE: BA: BE: BE: AF
echo ${info[5]^^}
Це не повне рішення, але ви перевіряєте 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), ви повинні мати його MAC-адресу в
Це вдосконалена версія відповіді Горе. 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]'