获取Wi-Fi接口设备名称

获取Wi-Fi接口设备名称

类似于上一个关于查找网络设备名称的问题,我想获得一个(可靠的)设备名称列表,但仅限于 Wi-Fi 设备。根据您的命名结构,它看起来如下所示:

wlan0
wlan1

或者

wlp5s0
wlp5s1

答案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

相关内容