我需要在无线客户端cpe中运行自定义命令以获取以下数据
ESSID,MAC,FREQUENCY,QUALITY,LEVEL,NOISE。
XM.v5.5.8# iwlist ath0 scanning
ath0 Scan completed :
Cell 01 - Address: DC:9F:DB:08:49:DE
ESSID:"Satek"
Mode:Master
Frequency:5.54 GHz (Channel 108)
Quality=28/94 Signal level=-68 dBm Noise level=-92 dBm
Encryption key:on
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Extra:bcn_int=100
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Extra:mtik_ie=dd2a000c42000000011e0014000000661a05000041502d43454e54524f2d35000000000000000000
我尝试使用其他论坛的代码
XM.v5.5.8# iwlist ath0 scanning | awk -F '[ :=]+' '/(ESS|Freq|Qual)/{ printf $3" " } /Encr/{ print $4 }'
"Satek" 5.54 28/94 on
"Satek" 5.57 14/94 on
"Satek" 5.6 13/94 on
"Satek" 5.61 9/94 on
"Satek" 5.64 36/94 on
"Satek" 5.68 26/94 on
"Satek" 5.7 9/94 on
"IVICA" 5.825 17/94 on
几乎所有我需要的东西,但我不知道如何获得其他项目,如mac地址信号电平和噪音。
答案 0 :(得分:5)
要解析所需值格式的差异,您需要awk script
或bash script
才能获得获取所有值所需的灵活性。 (你可以在一行中完成,但它会非常混乱)。这是一个bash脚本,它将解析iwlist
并输出mac essid frq chn qual lvl enc
。我没有Noise
,但如果您愿意,可以按照格式添加它。
根据需要使用命令行。例如。 iwlist 'iface' scan | bash parseiwl.sh
(其中&{39; iface'
为ath0
,parseiwl.sh
只是我保存脚本的名称)。 注意:由于使用[[]]
和=~
,此脚本无法移植,因此仅在bash中使用:
#!/bin/bash
## print header lines
echo ""
echo " mac essid frq chn qual lvl enc"
while IFS= read -r line; do
## test line contenst and parse as required
[[ "$line" =~ Address ]] && mac=${line##*ss: }
[[ "$line" =~ \(Channel ]] && { chn=${line##*nel }; chn=${chn:0:$((${#chn}-1))}; }
[[ "$line" =~ Frequen ]] && { frq=${line##*ncy:}; frq=${frq%% *}; }
[[ "$line" =~ Quality ]] && {
qual=${line##*ity=}
qual=${qual%% *}
lvl=${line##*evel=}
lvl=${lvl%% *}
}
[[ "$line" =~ Encrypt ]] && enc=${line##*key:}
[[ "$line" =~ ESSID ]] && {
essid=${line##*ID:}
echo " $mac $essid $frq $chn $qual $lvl $enc" # output after ESSID
}
done
示例:强>
sudo iwlist wlp23s0 scan | bash parseiwl.sh
mac essid frq chn qual lvl enc
00:14:D1:C6:C8:6F "skyline_633" 2.442 7 54/70 -56 on