ฉันต้องการตรวจสอบ MAC-address ของอินเตอร์เฟส Wi-Fi ของฉันบน Raspberry Pi ZW ที่รัน Raspbian Lite
มีคำสั่งที่ฉันสามารถเรียกใช้เพื่อบอกฉันนี้หรือไม่? มีอุปกรณ์ใน/proc
ต้นไม้ที่จะเปิดเผยหรือไม่
ฉันต้องการตรวจสอบ MAC-address ของอินเตอร์เฟส Wi-Fi ของฉันบน Raspberry Pi ZW ที่รัน Raspbian Lite
มีคำสั่งที่ฉันสามารถเรียกใช้เพื่อบอกฉันนี้หรือไม่? มีอุปกรณ์ใน/proc
ต้นไม้ที่จะเปิดเผยหรือไม่
คำตอบ:
ต่อไปนี้เป็นส่วนของสคริปต์ทุบตีที่ฉันใช้เพื่อตรวจสอบ MAC ของอีเธอร์เน็ตหรือหากไม่มี WiFi (สำหรับ Pi Zero W)
มันไม่ได้พึ่งพาifconfig
หรือวิธีการอื่น ๆ ในการตรวจสอบ IP ที่จัดสรรและเพียงแค่ต้องการให้ระบบตรวจจับฮาร์ดแวร์เครือข่าย
สิ่งนี้ใช้ได้กับ Jessie, Stretch หรือ 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
โดยทั่วไปคุณสามารถใช้MAC=$(cat /sys/class/net/wlan0/address)
เพื่อค้นหา MAC ของ inbuilt WiFi บน Pi3 หรือ Pi Zero W.
MAC=$(cat /sys/class/net/wlx*/address)
ควรทำงานกับ WiFi dongles บน Stretch แต่คุณสามารถปรับตัวด้านบนเพื่อทำงานกับทั้ง Jessie หรือ Stretch สำหรับ WiFi และ Ethernet
/sys/class/net
หรือไม่?
ใส่ใน terminal / console ifconfig wlan0
ในตอนท้ายของบรรทัดแรกควรเป็นที่อยู่ฮาร์ดแวร์ aka MAC
นี่คือตัวอย่างผลลัพธ์ (ภาษาเยอรมัน):
pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0 Link encap:Ethernet Hardware Adresse b8:27:eb:xx:xx:xx
...
ifconfig
จะเป็นทางเลือกที่ดีในอนาคต
distros หลายคนจะถูกแทนที่ifconfig
ด้วยดังนั้นฉันจะกีดกันการใช้งานของip
ifconfig
ในการแสดงอินเตอร์เฟส wlan0:
ip link show wlan0
หรือ
cat /sys/class/net/wlan0/address
ifconfig
จะยังคงมีอยู่เป็นเวลาหลายปี การลบมันจะช่วยประหยัด 800 กิโลไบต์ซึ่งทำลายสคริปต์เก่า ๆ ได้มาก
ip link show
ip addr show
ifconfig
ค่าเริ่มต้นอีกต่อไป Raspbian Stretch ดูเหมือนจะมีอยู่ ฉันชอบip
มากกว่าifconfig
แม้ว่าฉันคิดว่าบ๊อบพูดlink
ถูกว่าเหมาะสมกว่าaddr
ในบริบทนี้ วิธีแก้ปัญหาที่ฉันทำไปคือการอ่านจาก/sys/class/net/wlan0/address
- ไม่จำเป็นต้องแยกวิเคราะห์เพิ่มเติม นอกจากนี้ฉันเขียนมันcat /sys/class/net/wl*/address
ในความพยายามที่ไร้เดียงสาเพื่อให้ประหยัดสำหรับ "ชื่อเครือข่ายอินเทอร์เฟซที่คาดเดาได้" ที่กำลังจะมาถึง
ifconfig wlan0
ในตอนท้ายของบรรทัดแรกควรเป็นที่อยู่ฮาร์ดแวร์ aka MAC