udev 및 일반 메서드를 사용하여 영구 인터페이스 이름 할당

udev 및 일반 메서드를 사용하여 영구 인터페이스 이름 할당

저는 현재 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번째 공백 이후부터 줄 끝까지 내용을 제공합니다.

관련 정보