使用iw

使用iw

在 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 sudoman iwlistman egrepman 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-删除了开头的空格,并按sortdBm 对行进行排序,数值最小的排在最前面。这意味着接入点按信号强度排序,最强的排在最前面。

-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
  1. 使用输出nm-tool获取无线接入点列表
  2. 过滤仅获取接入点
  3. 用于sed在每行前面附加信号电平
  4. 按相反的顺序对输出进行数字排序(最大数字在前)

nm-tool是“网络管理器”包的一部分,显然安装在典型的 Ubuntu 系统中。

答案4

如果你可以在你的机器上安装软件,我建议维蒙

要安装它,请运行:

sudo apt-get update
sudo apt-get install wavemon

运行它:

sudo wavemon

然后按下F3扫描窗口。您应该会看到类似以下内容的内容:

wavemon扫描窗口

相关内容