我编写了wlan管理器脚本来处理开放的/ad-hoc/wep/WPA2网络。现在我正在尝试解析iw wlan0扫描输出,以便在我的脚本中获得更好的扫描功能。我的目标是获得如下输出:
SSID channel signal encryption
wlan-ap 6 70% wpa2-psk
test 1 55% wep我已经实现了如下输出:
$ iw wlan0 scan | grep 'SSID\|freq\|signal\|capability' | tac
SSID: Koti783
signal: -82.00 dBm
capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime (0x0531)
freq: 2437我一直在尝试学习bash/sed/awk,但还没有找到一种方法来实现我正在尝试的东西。那么,实现这一目标的好方法是什么呢?
发布于 2013-07-26 19:47:49
这是我基于Sudo_O answer的最终解决方案
$1 == "BSS" {
MAC = $2
wifi[MAC]["enc"] = "Open"
}
$1 == "SSID:" {
wifi[MAC]["SSID"] = $2
}
$1 == "freq:" {
wifi[MAC]["freq"] = $NF
}
$1 == "signal:" {
wifi[MAC]["sig"] = $2 " " $3
}
$1 == "WPA:" {
wifi[MAC]["enc"] = "WPA"
}
$1 == "WEP:" {
wifi[MAC]["enc"] = "WEP"
}
END {
printf "%s\t\t%s\t%s\t\t%s\n","SSID","Frequency","Signal","Encryption"
for (w in wifi) {
printf "%s\t\t%s\t\t%s\t%s\n",wifi[w]["SSID"],wifi[w]["freq"],wifi[w]["sig"],wifi[w]["enc"]
}
}'输出:
$ sudo iw wlan0 scan | awk -f scan.awk
SSID Frequency Signal Encryption
netti 2437 -31.00 dBm Open
Koti783 2437 -84.00 dBm WPA
WLAN-AP 2462 -85.00 dBm WPA发布于 2013-07-23 20:39:15
发布于 2013-07-23 20:45:22
下面是一个GNU awk脚本,用于获取每个唯一is的SSID和通道:
/^BSS / {
MAC = $2
}
/SSID/ {
wifi[MAC]["SSID"] = $2
}
/primary channel/ {
wifi[MAC]["channel"] = $NF
}
# Insert new block here
END {
printf "%s\t\t%s\n","SSID","channel"
for (w in wifi) {
printf "%s\t\t%s\n",wifi[w]["SSID"],wifi[w]["channel"]
}
}考虑到你所做的所有研究,为信号和加密添加新的块对你来说应该很容易。
将脚本保存到wifi.awk等文件中,然后像这样运行:
$ sudo iw wlan0 scan | awk -f wifi.awk输出将采用请求的格式化格式:
SSID channel
wlan-ap 6
test 1https://stackoverflow.com/questions/17809912
复制相似问题