저는 현재 Raspberry Pi 3을 개발 중이며 IoT 작업을 수행하려고 합니다. USB 무선 어댑터를 스니핑하고 기본 무선 어댑터나 이더넷을 통해 데이터를 전송하고 싶습니다. udev를 사용하고 /etc/udev/rules.d/70-pertant-net.rules를 수정할 수 있을 것 같습니다. 기본 무선 어댑터의 MAC 주소를 가져와야 하는 것 같습니다. lshw를 사용하여 MAC 주소를 얻었습니다.
root@raspberrypi:/etc/udev# lshw -class network *-usb:1 description: Wireless interface product: 802.11 n WLAN vendor: Ralink physical id: 4 bus info: usb@1:1.4 logical name: wlan1 version: 1.01 serial: 1.0 capabilities: usb-2.00 ethernet physical wireless configuration: broadcast=yes driver=rt2800 usbdriverversion=4.4.13-v7+ firmware=0.29 link=no maxpower=450mA multicast=yes speed=480Mbit/s wireless=IEEE 802.11bgn *-network:0 description: Wireless interface physical id: 2 logical name: wlan0 serial: b8:27:eb:e9:67:22 capabilities: ethernet physical wireless configuration: broadcast=yes driver=brcmfmac driverversion=7.45.41.26 firmware=01-df77e4a7 ip=192.168.0.102 multicast=yes wireless=IEEE 802.11bgn *-network:1 description: Ethernet interface physical id: 3 logical name: eth0 serial: b8:27:eb:bc:32:77 size: 100Mbit/s capacity: 100Mbit/s capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=smsc95xx driverversion=22-Aug-2005 duplex=full firmware=smsc95xx USB 2.0 Ethernet ip=10.42.0.11 link=yes multicast=yes port=MII speed=100Mbit/s
이 명령을 통해 기본 무선 인터페이스의 MAC 주소를 볼 수 있습니다. 규칙에 넣기만 하면 인터페이스를 wlan0으로 직접 설정할 수 있습니다. 내가 원하는 것은 좀 더 일반적인 것입니다. 내가 설정한 모든 장치에 이러한 항목을 설정하고 싶지 않습니다. 무선 어댑터의 주소를 가져오는 스크립트를 작성하겠습니다.
root@raspberrypi:/etc/udev# sudo lshw -class network | grep b8:27:eb | sed 's/^.*serial: //' b8:27:eb:e9:67:22 b8:27:eb:bc:32:77
나는 사용했다창사,grepRaspberry Pi Foundation에 속한 MAC 주소(b8:27:eb:xx:xx:xx)를 가져온 다음 "serial:"과 같은 것을 가져와서 사용합니다.sedMAC을 떠나시면 됩니다.
그러다가 이더넷 어댑터에도 동일한 헤더를 가진 MAC 주소가 있다는 것을 발견했습니다.
제 질문은 RPi 무선 어댑터의 MAC 주소를 명령 출력으로 어떻게 얻을 수 있느냐는 것입니다.
답변1
첫 번째 무선 MAC을 인쇄합니다. (참고: 무선 환경에서 이 주소를 "MAC 주소"라고 부르는지는 확실하지 않습니다.)
lshw -class network | awk '/usb:/ {ok=0} /network:/ {ok=1} /serial:/ {serial=$2} /capabilities: .*wireless/ && ok {print serial; exit}'
답변2
인터페이스 이름을 알고 있으면 ifconfig를 사용하여 MAC 주소를 쿼리할 수 있습니다.
ifconfig wlan0 | grep HWaddr | cut -d ' ' -f 10-
ifconfig wlan0이 인터페이스에 대한 정보만 인쇄됩니다.
grep 하드웨어 주소MAC 주소가 있는 줄만 유지됩니다.
컷-d''-f 10- 줄을 공백으로 구분하고 10번째 공백 이후부터 줄 끝까지 내용을 제공합니다.