Wi-Fiインターフェイスデバイス名を取得する


回答:


15

Linux iwでは、dev次のコマンドを使用して(ワイヤレスデバイスとその構成を表示/操作)使用できます。

Commands:
    dev
        List all network interfaces for wireless hardware.

あれは

iw dev

次のようなものが得られます:

phy#0
    Interface wlan0
        ifindex 3
        wdev 0x1
        addr 00:12:32:e4:18:24
        type managed
phy#1
    Interface wlan1
        ifindex 4
        wdev 0x2
        addr 00:12:22:c6:b2:0a
        type managed

インターフェイス名のみを抽出する場合は、常に出力を処理できます。例

iw dev | awk '$1=="Interface"{print $2}'

ヘルプページに次のように明記されていることに注意してください。

Do NOT screenscrape this tool, we don't consider its output stable.

私はこの答えが好きです、問題を解決しますが、こすらないことについての少しは私を心配させて、より良い方法があるかもしれないと思います。今のところ、これを開いたままにしておきたいと思います。
マット

9

少なくともUbuntuには/proc/net/wireless、Wi-Fiインターフェースに関する詳細を含むファイルがあります。私のための出力:

$ cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
wlp5s0: 0000   36.  -74.  -256        0      0      0     16  33004        0

少し厄介ですが、デバイス名はそこにあります。

インターフェイス名のみを取得するには:

cat /proc/net/wireless | perl -ne '/(\w+):/ && print $1'

perlコードは、コロンの前の単語の文字列を印刷します。


これは私にとってはうまくいきませんでした。おそらく、ワイヤレスカードが無効になっているためです(検出可能)。
imbuedHope

9

/ sysにsysfsがマウントされている場合、次のコマンドが機能します。

# find /sys/class/net -follow -maxdepth 2 -name wireless | cut -d / -f 5
wlan0
# find /sys/class/net -follow -maxdepth 2 -name phy80211 | cut -d / -f 5
wlan0

または、なしでfind

for dev in `ls /sys/class/net`; do
  if [ -d "/sys/class/net/$dev/wireless" ]; then echo $dev; fi;
done

最初はディレクトリを/sys/class/net持つすべてのデバイスwireless(WiFiデバイスだけでなく)を見つけ、2番目は802.11互換のデバイスを見つけます

カーネル4.4でテスト済み


7

Joshの答えに基づいて、シェルグロブを使用し/sys/class/netて、wireless内部にディレクトリがあるディレクトリを特定しawk、デバイス名を取得します。

# find the directories
$ printf '%s\n' /sys/class/net/*/wireless # substitute with phy80211 if desired
/sys/class/net/wlp4s0/wireless
# filter out the "device" part
$ printf '%s\n' /sys/class/net/*/wireless | awk -F'/' '{ print $5 }'
wlp4s0

1

Android 4、Android 7.1、Android 9、およびArchLinuxでテストされたユニバーサルルート(非ルート)。

ls /sys/class/ieee80211/*/device/net/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.