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

Re: [BASH] selezionare rete wireless da shell



Mattia ha scritto:
Credo che otterrai pochi aiuti se non posti il file /tmp/wifi :)

Forse hai ragione, ma visto che in fondo è un semplice output standard di "iwlist wla0 scan", non ci avevo pensato. Cmq in fondo alla mail l'ho inserito.

Da tale output ne deriva che con i comandi:

iwlist wlan0 scan > /tmp/wifi
cat /tmp/wifi |grep Cell | wc -l

ottengo il numero di reti disponibili (contando in realtà due volte una stessa rete - es. Bruder - ciò che però per ora non mi preoccupa)

Con il comando seguente invece estraggo la lista delle reti:

awk '/ESSID/ { print $0}'

Che però, come ho scritto nella mail precedente, mi dà un risultato spurio:

ESSID:"Bruder"
ESSID:"Bruder"
ESSID:""
ESSID:"NUMERICABLE-4656"
ESSID:"Radiolitec"
E non qualcosa di più facilmente utilizzabile, del tipo:

Bruder
Bruder

NUMERICABLE-4656
Radiolitec

Ai nomi così formattati vorrei quindi assegnare diverse variabili (l'ideale sarebbe di stamparle anche a schermo, es 1. Bruder , 2. Bruder , 3. , 4. NUMERICABLE-4556 , 5. Radiolitec), cosicchè nel memento in cui il terminale mi chiede a quale rete voglio connettermi, possa indicare univocamente la rete desiderata indicando es. "1" "2" "3" "4" o "5":

echo -n "A quale rete vuoi provare a collegarti?"
read RETE
echo RETE = (inserire la variabile giusta)

E quindi connettersi con i parametri disponibili (qualcosa del tipo), anche questi però "greppati o seddati" in maniera appropriata (che non so però come fare):

iwconfig wlan0 mode `cat /tmp/wifi |grep Mode |grep [Mode:]` channel `cat /tmp/wifi |grep Channel | grep [Channel:]` essid $RETE

Ovviamente, una volta ottenuto ciò si potrebbe fare in modo che lo script tenti di connettersi solo alle reti aperte (greppando le reti disponibili solo a quelle contenenti il parametro "Encryption key:off", o in caso di rete cifrata, chiedere di inserire la chiave... Insomma, poterla estendere all'infinito.

In effetti più ci penso, più il tutto si complica, ma di base con qualche ciclo di espressione regolare, for, read e if, dovrebbe uscire qualcosa.

Spero in un vostro magnanimo aiuto.

Grazie!

giopas

# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 00:14:6C:47:5D:6B
                    ESSID:"Bruder"
                    Mode:Master
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
Quality=14/100 Signal level=-97 dBm Noise level=-106 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=00000034f97c5b4b
          Cell 02 - Address: 00:14:6C:1F:21:7E
                    ESSID:"Bruder"
                    Mode:Master
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
Quality=10/100 Signal level=-100 dBm Noise level=-107 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=00000034f51c5181
          Cell 03 - Address: 00:0C:84:02:A1:C9
                    ESSID:""
                    Mode:Master
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
Quality=14/100 Signal level=-98 dBm Noise level=-107 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 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:tsf=00000d87c4d2b1e5
          Cell 04 - Address: 00:1E:8C:C0:6B:D3
                    ESSID:"NUMERICABLE-4656"
                    Mode:Master
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
Quality=7/100 Signal level=-102 dBm Noise level=-107 dBm
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
                              12 Mb/s; 48 Mb/s
                    Extra:tsf=000001945ff2418a
          Cell 05 - Address: 00:0A:78:9D:6B:AF
                    ESSID:"Radiolitec"
                    Mode:Master
                    Channel:10
                    Frequency:2.457 GHz (Channel 10)
Quality=9/100 Signal level=-100 dBm Noise level=-106 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 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:tsf=00000a4268f6549c
--
"The paradigm of competition is a race: by
rewarding the winner, we encourage everyone
to run faster. When capitalism really works
this way, it does a good job; but its defenders
are wrong in assuming it always works this way.
If the runners forget why the reward is offered
and become intent on winning, no matter how, they
may find other strategies--such as, attacking
other runners. If the runners get into a fist
fight, they will all finish late."
(GNU manifesto/R. Stallman)


Reply to: