如何扫描无线接入点?

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

不幸的是,该程序似乎在Ubuntu 11.10中被打破了

iwlist wlan0 scan 

没有任何有意义的回报。

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

sudo iwlist wlan0 scanning | egrep 'Cell |Encryption|Quality|Last beacon|ESSID' 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

在你从别人那里执行命令字符串之前,总是做任何人(如上所述)。 自我教育比盲目信任更安全。

 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系统中。

使用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 

每个命令解释:

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: //" :将egrep的输出减少到:

  -77.00 dBm 
 nameOfAccessPoint1
 -71.00 dBm
 nameOfAccessPoint2 

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

如果我们对此输出进行sort ,我们最终得到一个信号强度和接入点列表,显示最顶部信号最强的接入点:

 -71.00 dBm nameOfAccessPoint2 -77.00 dBm nameOfAccessPoint1 
 iwinfo wlan0 scan 

wlan0是你的无线接口

结果如下表…

 Cell 06 - Address: F0:B4:29:50:76:0C ESSID: "Xiaomi_760B" Mode: Master Channel: 1 Signal: -38 dBm Quality: 70/70 Encryption: mixed WPA/WPA2 PSK (TKIP, CCMP) .... 

该命令将返回加密信息

system:openwrt 15.05