适用于 Linux 的人类可解析 WiFi 扫描工具在哪里?

Wil*_*ley 6 linux wifi

在 Linux 上,当它们扫描可用的 WiFi 网络时iw提供iwlist大量信息。我想说这信息太多了。2,308 行对于人类来说解析起来太多了。诚然,我在一栋繁忙的公寓楼里,但更重要的是,冗长的输出实际上对我来说是一个障碍。

$ sudo iw dev wlp8s0 scan | wc -l
2308
Run Code Online (Sandbox Code Playgroud)

我更喜欢更简单的输出。一个相对简短的表格,显示附近接入点的简明概述。此输出仅显示人们可能期望从 GUI WiFi 实用程序获得的各种字段(SSID、信号强度、加密类型),但在终端中。

似乎类似的用户已经在我之前完成了同样的任务,并且在编写复杂的脚本和程序来解析 Linux 无线工具(如iw. 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14

iw我发现的这个问题的几乎每个答案都建议解析诸如和iwlist使用grepsed、之类的工具的输出awk,但这似乎不是一个很好的答案。特别是因为iw明确指出其输出不应删除。

不要对这个工具进行屏幕抓取,我们认为它的输出不稳定。

我想说nmcli非常接近我想要的,只是我认为NetworkManager仅仅为了通过nmcli. 而且,iwiwlist似乎比我在谷歌搜索中更普遍nmcli

FreeBSD 上ifconfig的 WiFi 扫描输出看起来很完美。我不确定该实现是否在所有 BSD 风格中都很常见,但它正是我希望在 Linux 中使用的工具。

30.3.4.1.1。如何查找接入点 用于 WiFi 扫描的 ifconfig 的 BSD 版本的简单、干净的输出

是否有一个类似的库存/标准工具适用于几乎每个版本的 Linux,可以扫描 WiFi 网络并列出如上所示的简单输出?

A.B*_*A.B 5

大多数 Linux 平台都附带wpa_supplicant,它可以独立使用,也可以由其他“框架”(如 NetworkManager 及其 CLI 工具)使用wpa_cli。我不知道更新的 systemd 方法(它们往往会取代其他所有方法......)。

# wpa_cli 
wpa_cli v2.6
[...]
Selected interface 'wlan0'

Interactive mode

> scan
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>CTRL-EVENT-NETWORK-NOT-FOUND 
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>CTRL-EVENT-NETWORK-NOT-FOUND 
> scan_results 
bssid / frequency / signal level / flags / ssid
xx:xx:xx:xx:xx:xx   2412    -39 [WPA2-PSK-CCMP][ESS]    
xx:c7:29:xx:xx:xx   2462    -56 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]   SomeSSID
xx:e9:dd:xx:xx:xx   2412    -57 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]   OtherSSID
xx:8e:78:xx:xx:xx   2412    -65 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]   AthirdSSID
[...]
Run Code Online (Sandbox Code Playgroud)

或非交互式:

# wpa_cli scan_results
Selected interface 'wlan0'
bssid / frequency / signal level / flags / ssid
xx:xx:xx:xx:xx:xx   2412    -40 [WPA2-PSK-CCMP][ESS]    
[...]
Run Code Online (Sandbox Code Playgroud)

(仅供参考,这是一个隐藏的 ssid)。