Có lệnh Linux nào cho phép tôi lấy địa chỉ MAC của bộ định tuyến không?
Có lệnh Linux nào cho phép tôi lấy địa chỉ MAC của bộ định tuyến không?
Câu trả lời:
Tôi thích một lớp lót:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
hiển thị MAC được liên kết với địa chỉ IP cổng mặc định từ đầu ra của ip route show match 0/0
, được phân tích cú pháp bởi awk
.
iwconfig | grep "Access Point"
lệnh. Tôi nghĩ rằng cái bị tắt bởi hai là phiên bản được lưu trong bộ nhớ cache của kết nối có dây, mà tôi đã rút phích cắm để cố gắng đảm bảo rằng tôi đang nhận được tuyến không dây.
Không sử dụng các lệnh đã lỗi thời ifconfig
(8), arp
(8) hoặc route
(8). Sử dụng lệnh mới thay thế chúng và có thể làm nhiều hơn, ip
(8).
Sử dụng ip route list
để xem default
bộ định tuyến máy của bạn có. Đó phải là một dòng bắt đầu bằng default
(hoặc 0.0.0.0
) và có địa chỉ IP cho bộ định tuyến sau. Nếu bạn sử dụng IPv6, chỉ cần thêm công -6
tắc , ip -6 route list
.
default via 192.168.11.1 dev eth0 proto static
Để xem địa chỉ MAC của địa chỉ IP của default
bộ định tuyến, hãy sử dụng ip neigh
và tra cứu dòng có địa chỉ IP và địa chỉ MAC sau lladdr
.
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Nếu bạn không biết IP của bộ định tuyến, rất có thể đó là cổng mà bạn có thể nhận được từ route
lệnh :
$ 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
Lưu ý các dòng với các cờ UG
. Địa chỉ trong Gateway
cột của dòng đó là những gì bạn đang tìm kiếm. Sau đó làm theo đề xuất của 2707974 với arp -n
(ping IP nếu nó không hiển thị lúc đầu) và tìm dòng phù hợp:
$ 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
Ở đây, MAC của bộ định tuyến của bạn sẽ là 00:11:22:33:44:55
.
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Đây là một lớp lót hoạt động trong dash
, bash
và 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
trả về một cái gì đó như:
mặc định thông qua 192.168.0.1 dev eth1 proto static metric 100
chúng tôi nhận IP từ dòng đó là trường thứ ba với cut
và dòng grep chứa IP đó và không gian ngay sau nó từ đầu ra của vùng lân cận mạng. (không gian được yêu cầu để tránh khớp 192.168.0.1
với 192.168.0.10
), dòng khớp sẽ giống như:
192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af REACHABLE
CA: FE: BA: BE: BE: AF
echo ${info[5]^^}
Không phải là một giải pháp hoàn chỉnh, nhưng bạn kiểm tra 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
), thì bạn nên có địa chỉ MAC của nó trên bộ đệm arp ...
Đây là phiên bản cải tiến của câu trả lời của Grief. Có thể danh sách tuyến ip -4 0/0 trả về nhiều hơn một dòng (IP), trong trường hợp đó, một lớp hoàn chỉnh không hoạt động. Vì vậy, phiên bản sửa đổi sau đây chỉ sử dụng dòng đầu tiên mà danh sách tuyến ip -4 0/0 trả về.
ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'