Olá Marcelo, veja se o meu entendimento ajuda.
Com certeza exite um jeito mais fácil, mas esse foi
o que eu consegui montar testando com a saída do iwlist aqui.
ps- Comecei com o loop, por isso a variável "a" com nome sem significado:)
O script tem identação, mas pode perder na viagem.
Exemplo de saída
Cell01 Address - 00:1D:D5:D0:94:90
Cell01 Quality - Quality=15/100 Signal level=15/100
Cell01 Encryption_key - on
Cell01 ESSID - "ARRIS-9492"
Cell01 Mode - Master
Cell01 IE -
Cell02 Address - 00:21:04:1C:9E:95
Cell02 Quality - Quality=13/100 Signal level=13/100
Cell02 Encryption_key - on
Cell02 ESSID - "rede wireless"
Cell02 Mode - Master
Cell02 IE - IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (2) : TKIP
CCMP
Abraços Paulo Bettega
#!/bin/bash
entrada=$(iwlist scan 2>&1)
for a in {01..99}; do
amais1=$(printf '%02d' $(bc <<<"$a+1"))
if grep -q "Cell $amais1" <<<"$entrada"; then
end2='/Cell '$amais1'/'
else
end2='$'
fi
for campo_pesq in Address 'Quality=' 'Encryption key' ESSID Mode\
'IE: W'
do
case "$campo_pesq" in
Quality=)campo=Quality
;;
'Encryption key')campo=Encryption_key
;;
'IE: W')campo=IE
;;
*)campo="$campo_pesq"
;;
esac
eval "$(\
echo Cell$a\_$campo=\'$(\
cell=$(sed -n "/Cell $a/,$end2 { $end2 b; p;}" <<<"$entrada")
if [ "$campo" = 'IE' ]; then
sed -n "/$campo_pesq/,$ p" <<<"$cell"
else
grep "$campo_pesq" <<<"$cell" | cut -d: -f2-
fi
)\'
)"
eval echo Cell$a $campo - \$Cell$a\_$campo
done
[ "$end2" = '$' ] && break
done
On 01-10-2014 15:18, Marcelo F Andrade address@hidden [shell-script] wrote:
Olá, gente.
O título comunica mas não explica.
Estou tentando fazer um script para identificar o tipo de autenticação
das redes wifi de onde estou a partir da saída do iwlist scan.
De forma resumida, há duas linhas nessa saída que me dizem isso:
- se houver uma linha "Encryption key:off", a rede está aberta;
- caso contrário, se houver também uma linha "WPA Version 1", a
autenticação é WPA;
- caso contrário, a autenticação é WEP.
O que fiz até o momento foi
iwlist wlan0 scan | \
grep -Eo '(ESSID:".+"|Quality=[0-9]{,2}/[0-9]{2}|Encryption
key:(on|off)|WPA Version (1|2))' | \
...
Passo essa saída ainda por um sed para, ao final, converter o
resultado de colunas para linhas com awk.
A questão é que como a linha "WPA Version" pode ou não existir, isso
está quebrando meu script.
Eis que pensei em fazer uma lógica e tentar colocar um placeholder
para identificar o tipo de autenticação. Mas aí já não consegui
resolver sozinho e vim recorrer a vós. :-)
Agradeço por qualquer ajuda.
Atenciosamente.
--
MARCELO F ANDRADE | Belem, Amazonia, Brazil | http://about.me/mfandrade