Apakah ada perintah Linux yang memungkinkan saya untuk mendapatkan alamat MAC dari router saya?
Apakah ada perintah Linux yang memungkinkan saya untuk mendapatkan alamat MAC dari router saya?
Jawaban:
Saya suka satu kalimat:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
menunjukkan MAC yang terkait dengan alamat IP gateway default dari output ip route show match 0/0
, diuraikan oleh awk
.
iwconfig | grep "Access Point"
perintah. Saya pikir yang dimatikan oleh dua adalah versi cache dari koneksi kabel, yang saya cabut untuk mencoba memastikan saya mendapatkan rute nirkabel.
Jangan gunakan perintah usang ifconfig
(8), arp
(8) atau route
(8). Gunakan perintah baru yang menggantikannya dan dapat melakukan lebih banyak, ip
(8).
Gunakan ip route list
untuk melihat default
router mana yang dimiliki mesin Anda. Itu harus menjadi garis yang dimulai dengan default
(atau 0.0.0.0
) dan memiliki alamat IP setelah router. Jika Anda menggunakan IPv6, tambahkan saja -6
sakelar ip -6 route list
,.
default via 192.168.11.1 dev eth0 proto static
Untuk melihat alamat MAC dari alamat default
IP router, gunakan ip neigh
dan cari baris setelah alamat IP dan alamat MAC lladdr
.
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Jika Anda tidak tahu IP router Anda, kemungkinan besar gateway Anda yang bisa Anda dapatkan dari route
perintah :
$ 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
Perhatikan garis dengan bendera UG
. Alamat di Gateway
kolom baris itu adalah yang Anda cari. Kemudian ikuti saran 2707974 dengan arp -n
(ping IP jika tidak muncul pada awalnya), dan temukan baris yang sesuai:
$ 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
Di sini, MAC router Anda akan 00:11:22:33:44:55
.
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Berikut ini adalah satu-liner yang berfungsi dash
, bash
dan 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
mengembalikan sesuatu seperti:
default via 192.168.0.1 dev eth1 proto static metric 100
kami mendapatkan IP dari baris itu sebagai bidang ketiga dengan cut
dan garis grep yang berisi IP itu dan ruang segera setelah itu dari output lingkungan jaringan. (ruang diperlukan untuk menghindari kecocokan 192.168.0.1
dengan 192.168.0.10
), baris yang cocok akan menjadi seperti:
192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af REACHABLE
CA: FE: BA: BE: BE: AF: AF
echo ${info[5]^^}
Bukan solusi yang lengkap, tetapi Anda memeriksa 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
) maka Anda harus memiliki alamat MAC pada cache arp ...
Ini adalah versi perbaikan dari jawaban Duka. Dimungkinkan untuk ip -4 daftar rute 0/0 untuk mengembalikan lebih dari satu baris (IP), dalam hal ini liner lengkap tidak berfungsi. Jadi versi modifikasi berikut hanya menggunakan baris pertama yang mengembalikan daftar rute 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]'