私は現在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番目のスペースの後から行末までの内容を提供します。