답변:
나는 하나의 라이너를 좋아한다 :
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"명령 과 함께 나열된 두 가지 중 하나를 제공합니다 . 나는 2시에 떨어져있는 것이 유선 연결의 캐시 된 버전이라고 생각합니다. 이는 무선 경로를 얻고 있는지 확인하기 위해 플러그를 뽑았습니다.
더 이상 사용되지 않는 명령 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 프로토 정적 메트릭 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 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)하면 arp 캐시에 MAC 주소가 있어야합니다.