Answers:
我喜欢单线:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
显示与ip route show match 0/0
解析的的输出中与默认网关IP地址关联的MAC 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
要查看default
路由器IP地址的MAC地址,请使用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,请对其进行ping操作),并找到匹配的行:
$ 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 proto static metric 100
我们从该行获取IP作为第三字段,cut
并从网络邻居的输出中获取包含该IP及其后面立即空间的grep行。(需要空间,以避免的匹配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
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地址放在arp缓存上...