ネットワークデバイス名の検索に関する以前の質問と同様に、Wi-Fiデバイスについてのみ、デバイス名の(信頼できる)リストを取得したいと思います。命名構造に応じて、次のようになります。
wlan0
wlan1
または
wlp5s0
wlp5s1
ネットワークデバイス名の検索に関する以前の質問と同様に、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.
少なくとも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
コードは、コロンの前の単語の文字列を印刷します。
/ 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でテスト済み
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