获取Wi-Fi接口设备名称


Answers:


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设备)和其是802.11兼容的第二设备的发现

在内核4.4上测试


7

基于Josh的答案,我将使用Shell Glob来识别内部/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/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.