如何扫描无线接入点?

Mas*_*one 20 wireless

在 Ubuntu 11.04 中,我使用 InSSIDer 扫描可用的 AP 并按信号强度对它们进行排序。

不幸的是,该程序在 Ubuntu 11.10 中似乎已损坏,并且

iwlist wlan0 scan
Run Code Online (Sandbox Code Playgroud)

不会返回任何有意义的东西。

我有哪些选项可以扫描可用的无线接入点,可能使用 GUI?

wal*_*tor 25

sudo iwlist wlan0 scanning | egrep 'Cell |Encryption|Quality|Last beacon|ESSID' 应该有帮助。

它是sudo(以 root 身份运行,执行特权操作)、iwlist wlan0 scanning(在 STDOUT 上产生一些输出)、管道符号“|”的组合 (将左侧的命令的 STDOUT 连接到右侧进程的 STDIN),以及egrep带有“单引号”的命令(以防止 shell 解释“|”字符)正则表达式来过滤 STDIN . 有关详细信息,请参阅man bashman sudoman iwlistman egrepman re_format

在执行其他人的命令字符串之前,请始终执行任何操作(如上所述)。自我教育比盲目信任要安全得多。

  • 您能否包括对该命令的解释? (2认同)
  • 您能否在您的问题中包含解释,以便其他人可以更轻松地找到它并从中受益。我要求解释的原因是让您的回答尽可能完整。 (2认同)

Mat*_*aun 18

使用 iw

我没有nm-tool安装,所以我使用iw.

此命令按信号强度对接入点进行排序,最强的在前:

sudo iw dev wlan0 scan | egrep "signal:|SSID:" | sed -e "s/\tsignal: //" -e "s/\tSSID: //" | awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}' | sort
Run Code Online (Sandbox Code Playgroud)

每个命令解释:

iw dev wlan0 scan:扫描可通过接口访问的接入点 wlan0

egrep "signal:|SSID:":从iw的输出中获取具有信号强度的线路和 SSID 。输出现在看起来像这样:

        信号:-77.00 dBm 
        SSID:nameOfAccessPoint1
        信号:-71.00 dBm
        SSID:nameOfAccessPoint2

sed -e "s/\tsignal: //" -e "s/\tSSID: //": Reduceegrep的输出为:

-77.00 dBm 
名称访问点 1
-71.00 dBm
名称访问点2

awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}':将信号强度和 SSID 放在同一条线上。更具体地说,当行号 ( NR) 是偶数时,即我们在显示访问点的行上,输出记录分隔符 ( ORS) 应该是换行符。否则,我们在包含信号强度的行上,因此我们通过创建ORS一个简单的空间来加入该行。

如果我们有sort这个输出,我们最终会得到一个信号强度和接入点的列表,在顶部显示信号最强的接入点:

-71.00 dBm nameOfAccessPoint2
-77.00 dBm nameOfAccessPoint1
Run Code Online (Sandbox Code Playgroud)

注意:某些接入点可以具有扩展功能:扩展功能:* SSID 列表

因此,grepping "SSID:" 而不是 "SSID" 有助于避免这种额外的输出,否则会使命令失败。


小智 6

您还可以使用nmcli,几个月前我自己发现了它,这是迄今为止我使用过的最简单的一个。

\n
nmcli device wifi\n
Run Code Online (Sandbox Code Playgroud)\n

输出示例:

\n
IN-USE  BSSID              SSID                             MODE   CHAN  RATE        SIGNAL  BARS  SECURITY  \n        18:7B:CB:42:EF:8E  FRITZ!Box 7530 MS                Infra  11    260 Mbit/s  100     \xe2\x96\x82\xe2\x96\x84\xe2\x96\x86\xe2\x96\x88  WPA2      \n*       D1:12:C8:87:D7:F1  FRITZ!Box 7530 MS                Infra  6     130 Mbit/s  75      \xe2\x96\x82\xe2\x96\x84\xe2\x96\x86_  WPA2      \n        DD:72:2D:64:04:C9  example network                  Infra  11    130 Mbit/s  65      \xe2\x96\x82\xe2\x96\x84\xe2\x96\x86_  WPA1 WPA2 \n        2C:A1:F2:9E:97:2E  FRITZ!Box 7530 MS                Infra  11    130 Mbit/s  57      \xe2\x96\x82\xe2\x96\x84\xe2\x96\x86_  WPA2      \n        11:22:F5:89:71:9C  some_other_network               Infra  6     130 Mbit/s  55      \xe2\x96\x82\xe2\x96\x84__  WPA2      \n
Run Code Online (Sandbox Code Playgroud)\n


Pet*_*olf 5

nm-tool | grep "Freq.*Strength" | sed -ne "s|\(.*Strength \([0-9]\+\).*\)|\2}\1|p" | sort -n -r
Run Code Online (Sandbox Code Playgroud)
  1. 使用输出nm-tool获取无线接入点列表
  2. 过滤以仅获取接入点
  3. 用于sed在每行前面附加信号电平
  4. 以相反的顺序将输出排序为数字(最大的在前)

nm-tool 是“network-manager”软件包的一部分,它显然安装在典型的 Ubuntu 系统中。