如何显示可用的Wi-Fi网络列表?

我的Ubuntu笔记本的Wi-Fi在各种Wi-Fi网络上都正常工作。但是从nm-applet的工具栏图标访问的可用网络列表不再显示。我只能看到已知的网络。隐藏网络列表也没有显示任何新的网络。
同样,sudo iwlist scan只显示已知的网络。
我该如何获取所有可用网络的列表,以便连接到其中一个?
我正在使用Xubuntu 14.04。

6终端命令nmcli dev wifi list提供了GUI小程序所显示的额外信息吗? - steeldriver
3还值得注意的是,sudo iwlist scan显示的可用网络比iwlist scan(不带sudo)要多-所以这个问题本身就很有帮助。但也许它应该改名为“如何显示隐藏的WiFi网络列表”? - icc97
4个回答

使用nmcli dev wifi命令。它显示传输速率、信号强度和安全性(例如WPA):

screenshot after running "nmcli device wifi list

更多信息,请参阅nmcli的手册此处以获取nmcli的使用示例。

33这是相关的助记符:network manager command line interface device wifi - Serge Stroobandt
6对我来说,它只能找到我连接的WiFi网络,而不能找到所有可用的网络。 - icc97
6需要使用 sudo 来显示完整的列表。 - icc97
3默认情况下,不会显示BSSID(远程访问点的MAC地址)和其他详细信息,但您可以使用“-f”选项来显示它们,例如nmcli -f SSID,BSSID,DEVICE dev wifi。使用“-f ALL”来查看可用字段。 - bitinerant
10@icc97 - 如果你只能看到当前的网络,请运行nmcli dev wifi rescan,等一会儿,然后再尝试运行nmcli dev wifi - bitinerant
有关更多详细信息,请使用nmcli d --help命令。 - PJ Brunet
nmclinetwork-manager的一部分,所以如果尚未安装,请运行sudo apt install network-manager - ino


3wlan0 应该被替换为 ifconfig 或 /sys/class/net 子文件夹名称中的真实值,正如 @gujarat santana 的回答所述。 - Joshua Fox
1这对我来说比nmcli更好用,因为它可以分解并显示非拉丁字符,而nmcli只会显示一个“?”。 - EkriirkE
@EkriirkE 嗯,如果你想要在nmcli命令中获取更详细的WiFi网络信息,你可以使用-f ALL选项,例如:nmcli -f ALL dev wifi。虽然我承认,这仍然不如iw命令提供的信息详细。 - Hi-Angel
@Hi-Angel 不确定相关性?我们只想要SSID,甚至不需要更多的技术信息。 - EkriirkE
@EkriirkE,抱歉,我可能误读了你的评论。你说它在你这里效果更好是因为“它崩溃了”,而我以为你指的是“崩溃”意味着“显示详细信息”。话虽如此,我不确定“我们”是谁☺ 我肯定想要网络的技术细节,问题或答案似乎并没有将问题限制在仅仅是SSID上。 - Hi-Angel

在Ubuntu 16.04中:
  1. 进入 /sys/class/net,你可以看到这里的目录列表。
  2. 找到无线接口。它有无线目录,例如在我的情况下是 wlp10。你可以使用 ls wlp10 来检查它。如果目录的名称不同,请使用那个目录的名称
  3. sudo iwlist wlp1s0 scan | grep ESSID
从这里你可以列出所有可用的Wi-Fi接入点。
来源 here.

1请注意,此方法不适用于Broadcom无线网卡。 - Jared Smith
@JaredSmith,其他解决方案适用于Broadcom无线网卡吗? - Dan Esparza
1@DanEsparza 他们应该 - Jared Smith

进一步回答这个问题,我已经合并了一些答案,并加入了一些自己的看法。
至于关于nmcli的回答,如果你想安装更多软件,当然可以这样做。但是,如果你正在寻找接入点,可能你还没有互联网连接,无法连接以安装所需的软件。综上所述,这是我的解决方案:
for i in $(ls /sys/class/net/ | egrep -v ^lo$); do sudo iw dev $i scan | grep SSID | awk '{print substr($0, index($0,$2)) }'; done 2>/dev/null | sort -u 

分解一下:
for i in $(ls /sys/class/net/ | egrep -v ^lo$);

让我们来看看位置/sys/class/net的所有内容。这将列出所有的网络设备,但我们对回环接口并不感兴趣,所以我们会忽略它。
do sudo iw dev $i scan | grep SSID | awk '{print substr($0, index($0,$2)) }';done

对于我们在上面找到的每个网络接口,让我们进行扫描以列出所有的SSID(仅限SSID)。
2>/dev/null 

忽略所有错误(例如搜索具有以太网接口的SSID)。
| sort -u

最后,如果您的系统上有多个Wi-Fi适配器,请只列出每个SSID一次。

我知道我来晚了,但如果你只想检查无线设备(而不管lo和以太网设备),你可以按照以下步骤操作: for i in /sys/class/net/*; do [ -d "$i/wireless" ] && sudo iw dev $(basename $i) scan | grep SSID | awk '{print substr($0, index($0,$2)) }'; done | sort -u - bassmadrigal

  • 相关问题