Làm cách nào tôi có thể tìm thấy địa chỉ MAC của giao diện Wi-Fi của mình?


10

Tôi muốn xác định địa chỉ MAC của giao diện Wi-Fi của mình trên Raspberry Pi ZW chạy Raspbian Lite.

Có một lệnh mà tôi có thể chạy để nói với tôi điều này? Có một thiết bị trong /proccây sẽ tiết lộ nó?


1
Nhập vào thiết bị đầu cuối ifconfig wlan0Ở cuối dòng đầu tiên phải là địa chỉ phần cứng hay còn gọi là MAC.
LotPings

2
@LotPings Bạn có thể làm cho câu trả lời!
joan

Câu trả lời:


9

Sau đây là một đoạn của tập lệnh bash tôi sử dụng để xác định MAC của Ethernet hoặc nếu điều này không tồn tại của WiFi (đối với Pi Zero W).

Nó không dựa vào ifconfighoặc bất kỳ phương pháp nào khác để phát hiện IP được phân bổ và chỉ cần hệ thống phát hiện phần cứng mạng.

Điều này làm việc cho Jessie, Stretch hoặc Buster

# Find MAC of eth0, or if not exist wlan0
if [ -e /sys/class/net/eth0 ]; then
    MAC=$(cat /sys/class/net/eth0/address)
elif [ -e /sys/class/net/enx* ]; then
    MAC=$(cat /sys/class/net/enx*/address)
else
    MAC=$(cat /sys/class/net/wlan0/address)
fi

Về cơ bản, bạn có thể sử dụng MAC=$(cat /sys/class/net/wlan0/address)để tìm MAC của WiFi sẵn có trên Pi3 hoặc Pi Zero W.

MAC=$(cat /sys/class/net/wlx*/address) nên hoạt động trên các khóa WiFi trên Stretch, nhưng bạn có thể dễ dàng điều chỉnh các cách trên để hoạt động trên cả Jessie hoặc Stretch cho WiFi và Ethernet.


Câu trả lời rất hay. Cảm ơn bạn! Raspbian Stretch có sử dụng tên giao diện mạng có thể dự đoán không? Họ có ảnh hưởng đến việc đặt tên của cấu trúc dưới /sys/class/net?
Bex

1
@Bex Nó phụ thuộc; một cài đặt mới sử dụng tên giao diện mạng có thể dự đoán theo mặc định, tôi không biết về nâng cấp. Thật đơn giản để khôi phục hành vi cũ, xem Làm cách nào để thiết lập mạng / WiFi / IP tĩnh để biết chi tiết. Bất cứ tên nào được chọn bởi quá trình liệt kê phần cứng sẽ được hiển thị. Có một số phương pháp sửa đổi quá trình này.
Milliways

10

Nhập vào terminal / console ifconfig wlan0Ở cuối dòng đầu tiên phải là địa chỉ phần cứng hay còn gọi là MAC.

Đây là một đầu ra mẫu (miền địa phương Đức):

pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  Hardware Adresse b8:27:eb:xx:xx:xx
...

Tôi đã đưa ra câu trả lời này - nhưng tôi không nghĩ ifconfiglà một lựa chọn tốt trong tương lai.
Bex

1
Đồng ý, may mắn là có hai lựa chọn thay thế.
LotPings

7

Nhiều bản phân phối được thay thế ifconfigbằng ipvì vậy tôi sẽ không khuyến khích việc sử dụng ifconfig.

Để hiển thị giao diện wlan0:

ip link show wlan0

hoặc là

cat /sys/class/net/wlan0/address

Tham chiếu: https://www.linux.com/learn/replaces-ifconfig-ip


Tôi khá chắc chắn ifconfigsẽ vẫn có sẵn trong nhiều năm. Loại bỏ nó sẽ tiết kiệm được 800 kB, phá vỡ rất nhiều tập lệnh cũ.
Dmitry Grigoryev

Vấn đề là, người đó sẽ muốn có một mức lương.
Dmitry Grigoryev

1
Để tiếp tục sử dụng một lệnh không dùng nữa trong các triển khai mới là điều đáng buồn. Tôi đã thấy điều này trong các tình huống liên quan đến công việc, và nó giống như đẩy vấn đề ra trước mặt bạn, và đến một lúc nào đó nó sẽ trở nên lớn! Bắt đầu đối phó với nó thay vào đó!
MatsK

2
Trong trường hợp này, ip link showcó lẽ là thích hợp hơn ip addr show.
Bob

1
Trong hệ thống máy tính để bàn của tôi, tôi chạy Debian Stretch, dường như không còn ifconfigmặc định nữa, Raspbian Stretch dường như có nó. Tôi thích iphơn ifconfig, mặc dù tôi nghĩ Bob nói đúng linkcó lẽ phù hợp hơn addrtrong bối cảnh này. Tuy nhiên, giải pháp tôi đã thực hiện là đọc nó từ /sys/class/net/wlan0/address- không cần phân tích cú pháp bổ sung. Ngoài ra, tôi viết nó như là cat /sys/class/net/wl*/addressmột nỗ lực ngây thơ để làm cho nó tiết kiệm cho "tên giao diện mạng dự đoán" sắp tới.
Bex
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.