答案1
您nmcli
可以列出所有设备及其类型,例如
nmcli --get-values GENERAL.DEVICE,GENERAL.TYPE 设备显示
eno1
ethernet
wlp1s0
wifi
wlp1s1
wifi
p2p-dev-wlp1s0
wifi-p2p
lo
loopback
根据手册,使用时-g, --get-values
,“输出简洁。这种模式是为计算机(脚本)处理而设计的”。因此,您可以将该输出传输到其他工具并获取 wifi 设备名称,例如
nmcli ... | sed '/^wifi/!{h;d;};x'
或者
nmcli ... | awk '/^wifi/{print dev; next};{dev=$0};'
在 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.
答案2
至少在 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
代码打印冒号前面的单词字符串。
答案3
通用方式(非 root)在 Android 4、Android 7.1 和 Android 9 以及 ArchLinux 上进行了测试。
ls /sys/class/ieee80211/*/device/net/
答案4
建立在乔希的回答,我将使用 shell glob 来识别内部/sys/class/net
包含wireless
目录的目录,并cut
获取设备名称:
# 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 | cut -d/ -f5
wlp4s0