ネットワークデバイス名の検索に関する以前の質問 と同様に、Wi-Fiデバイスのみのデバイス名の(信頼できる)リストを取得したいと考えています。命名構造に応じて、次のようになります。
wlan0
wlan1
または
wlp5s0
wlp5s1
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.
/ 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
1つ目は/sys/class/net
内でwireless
ディレクトリのあるすべてのデバイスを検出し(これはWiFiデバイスだけではない場合があります)、2つ目は802.11互換のデバイスを検出します
カーネル4.4でテスト済み
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
コードは、コロンの前にあるWord文字列を出力します。
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
Android 4、Android 7.1およびAndroid 9およびArchLinux。
ls /sys/class/ieee80211/*/device/net/