在 Ubuntu 11.04 中,我使用 InSSIDer 扫描可用的 AP 并按信号强度对其进行排序。
不幸的是,该程序似乎在 Ubuntu 11.10 中被破坏了,并且
iwlist wlan0 scan
没有返回任何有意义的内容。
我可以使用哪些选项来扫描可用的无线接入点(可能使用 GUI)?
答案1
sudo iwlist wlan0 scanning | egrep 'Cell |Encryption|Quality|Last beacon|ESSID'
应该有帮助。
它是sudo
(以 root 身份运行,执行特权操作)、iwlist wlan0 scanning
(在 STDOUT 上产生一些输出)、管道符号“|”(将左侧命令的 STDOUT 连接到右侧进程的 STDIN)和带有“单引号”(以防止 shell 解释“|”字符)的命令的组合,用于过滤 STDIN。有关详细信息,请egrep
参阅man bash
、、、和。man sudo
man iwlist
man egrep
man re_format
在执行别人发来的命令字符串之前,务必先执行 man whatever(如上所述)。自我教育比盲目信任要安全得多。
答案2
使用iw
我没有nm-tool
安装所以我使用iw
。
此命令按信号强度对接入点进行排序,信号最强的优先:
sudo iw wlan0 scan | grep -Po '(signal|SSID):\K.*' | sed 's/ $/ [unknown SSID]/' | paste -d ' ' - - | cut -c2- | sort -gr
每个命令的解释:
iw wlan0 scan
扫描可通过接口访问的接入点wlan0
。
grep -Po '(signal|SSID):\K.*'
Grep 获取“signal:”或“SSID:”后的文本。参见这个答案了解有关使用的选项和的更多信息\K
。
将输出减少iw wlan0 scan
到如下内容:
-77.00 分贝毫瓦 接入点名称1 -69.00 分贝毫瓦 -71.00 分贝毫瓦 接入点名称2
请注意,信号强度为 -69 dBm 的接入点不会广播 SSID,grep 的输出是该行上的一个空格。
sed 's/ $/ [unknown SSID]/'
为了明确说明 SSID 未知,我们将单个空格替换为[unknown SSID]
。 的输出sed
为:
-77.00 分贝毫瓦 接入点名称1 -69.00 分贝毫瓦 [未知的 SSID] -71.00 分贝毫瓦 接入点名称2
paste -d ' ' - -
和粘贴我们将两行连续的线连接起来,中间有一个空格。结果如下:
-77.00 dBm 接入点名称1 -69.00 dBm [未知 SSID] -71.00 dBm 接入点名称2
cut -c2- | sort -gr
我们cut -c2-
删除了开头的空格,并按sort
dBm 对行进行排序,数值最小的排在最前面。这意味着接入点按信号强度排序,最强的排在最前面。
-69.00 dBm [未知 SSID] -71.00 dBm 接入点名称2 -77.00 dBm 接入点名称1
或者
这是另一种按信号强度排序接入点的方法。请注意,此命令不处理 SSID 为空的接入点:
sudo iw wlan0 scan | egrep "signal:|SSID:" | sed -e "s/\tsignal: //" -e "s/\tSSID: //" | awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}' | sort -gr
每个命令的解释:
iw wlan0 scan
扫描可通过接口访问的接入点wlan0
。
egrep "signal:|SSID:"
从 的输出中获取信号强度和 SSID 的行iw
。输出现在如下所示:
信号:-77.00 dBm SSID:nameOfAccessPoint1 信号:-71.00 dBm SSID:nameOfAccessPoint2
sed -e "s/\tsignal: //" -e "s/\tSSID: //"
我们将egrep
的输出减少到:
-77.00 分贝毫瓦 接入点名称1 -71.00 分贝毫瓦 接入点名称2
awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}'
将信号强度和 SSID 放在同一行。更具体地说,当行号 ( NR
) 为偶数时,即我们在显示接入点的行上,输出记录分隔符 ( ORS
) 应该是换行符。否则,我们在包含信号强度的行上,因此我们通过添加ORS
一个简单的空格来连接该行。
sort -gr
如果我们sort
用数值 ( -g
) 将此输出取反并将其反转 ( -r
),我们最终会得到一个信号强度和接入点的列表,其中信号最强的接入点位于最顶部:
-71.00 dBm nameOfAccessPoint2
-77.00 dBm nameOfAccessPoint1
注意:某些接入点可以具有扩展功能:
Extended capabilities:
* SSID List
这意味着 grepping“SSID:”而不是“SSID”有助于避免这个额外的输出,否则会导致命令失败。
答案3
nm-tool | grep "Freq.*Strength" | sed -ne "s|\(.*Strength \([0-9]\+\).*\)|\2}\1|p" | sort -n -r
- 使用输出
nm-tool
获取无线接入点列表 - 过滤仅获取接入点
- 用于
sed
在每行前面附加信号电平 - 按相反的顺序对输出进行数字排序(最大数字在前)
nm-tool
是“网络管理器”包的一部分,显然安装在典型的 Ubuntu 系统中。
答案4
如果你可以在你的机器上安装软件,我建议维蒙。
要安装它,请运行:
sudo apt-get update
sudo apt-get install wavemon
运行它:
sudo wavemon
然后按下F3扫描窗口。您应该会看到类似以下内容的内容: