如何扫描无线接入点?
在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 bash
, man sudo
, man iwlist
, man egrep
和man re_format
。
在你从别人那里执行命令字符串之前,总是做任何人(如上所述)。 自我教育比盲目信任更安全。
nm-tool | grep "Freq.*Strength" | sed -ne "s|\(.*Strength \([0-9]\+\).*\)|\2}\1|p" | sort -n -r
- 使用
nm-tool
输出获取无线接入点列表 - 过滤以仅获取接入点
- 使用
sed
在每行前面附加信号电平 - 按相反顺序将输出排序为数字(最大的第一个)
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