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

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

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

$ sudo iw dev wlp8s0 scan | wc -l
2308

我更喜欢更简单的输出。一个相对简短的表格,显示附近接入点的简明概述。此输出仅显示人们可能期望从 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我在谷歌搜索中更普遍。

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

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

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

答案1

大多数 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
[...]

或非交互式:

# 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]    
[...]

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

答案2

我看到有人提供了BusyBox兼容版本这里。我对其进行了改进,使其以 JSON 格式输出并且兼容 unicode。请检查出去。

下面是将 的输出解析为 JSON 的示例iw

wifiscan wlan0 | jq

结果

[
  {
    "mac": "c2:4b:e6:1e:95:b3",
    "ssid": "Angel 的 Chromecast",
    "freq": "2412",
    "sig": "-62.00 dBm",
    "sig%": "63.3333",
    "wpa": "n",
    "wpa2": "y",
    "wep": "n",
    "tkip": "n",
    "ccmp": "y"
  },
  {
    "mac": "1c:49:7b:30:23:3f",
    "ssid": "TAO",
    "freq": "2412",
    "sig": "-56.00 dBm",
    "sig%": "73.3333",
    "wpa": "n",
    "wpa2": "y",
    "wep": "n",
    "tkip": "n",
    "ccmp": "y"
  }
]

答案3

我在使用 Raspberry Pi OS 的 Raspberry Pi 上使用它,我最喜欢它,因为它为每个网络提供一行输出以及我通常感兴趣的信息:BSSID、SSID 和 2.4 GHz 与 5 GHz:

sudo wpa_cli -i wlan0 scan; sleep 5; sudo wpa_cli -i wlan0 scan_results

笔记:

  • -i对我来说,尽管我只有一个 WiFi 接口,但指定使用的接口是必要的。
  • 您可以省略sleep并简单地运行该命令几次。几秒钟后,网络将出现。

相关内容