shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] especie de "if-then-else" com sed


From: Paulo Bettega
Subject: Re: [shell-script] especie de "if-then-else" com sed
Date: Sat, 04 Oct 2014 10:25:21 -0300
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.1.2

Olá Marcelo, mudei o tipo de encriptação da rede sem-fio e
aqui a saída do iwlist ficou assim:

roteador com WPA-PSK/WPA2-PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                       Preauthentication Supported
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK


com WPA2-PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                       Preauthentication Supported


Pelo jeito a versão é sempre 'Version 1', o que muda é o WPA ou WPA2
em 'IE:' diferentes. IE, segundo o Google, é Information Elements.
Tem um monte de registros IE, mas pelo que eu vi todos os outros que
não tem informação sobre a encriptação são 'IE: Unknown: ...'
Abraços Paulo Bettega


On 02-10-2014 15:08, Paulo Bettega address@hidden [shell-script] wrote:
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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]