[Tecnica] Bash script e WiFi

Michele O-Zone Pinassi o-zone a zerozone.it
Sab 29 Maggio 2010 21:19:38 BST


Ciao a tutti,
ho provato a giocare un pò con Bash per realizzare uno script che mi
permetta, in fase di boot del portatile, di selezionare la rete wifi a
cui connettersi.

Sul portatile ho Slackware percui gli script di avvio sono in stile
BSD :-D. La rete si avvia con rc.inet1, che avvia le interfacce
wireless con rc.wireless, ed io ho creato rc.netconfig:

---------->8------------
#!/bin/bash

INTERFACE=$1

rm /tmp/wlan.lst

ifconfig $INTERFACE up
iwlist $INTERFACE scan | egrep -i 'essid|freq|qual|encr' |awk
'ORS=NR%4?" ":"\n"'| tr -s ' ' | while read l; do AP=`echo "$l "|awk
'{s=substr($0,index($0,"ESSID:")+7);print
substr(s,1,index(s,"\"")-1)}'` QU=`echo "$l "|awk
'{s=substr($0,index($0,"Quality=")+8);print
substr(s,1,index(s,"/")-1)}'` #    echo "$AP:$QU" echo "$AP $AP($QU)"
>> /tmp/wlan.lst done

APLIST=`cat /tmp/wlan.lst`

dialog --title "Net $INTERFACE configuration" --menu "Which WLAN to
connect to ?\n" 20 51 4 $APLIST "None" "None" 2>/tmp/$INTERFACE.cfg

-----------8<----------

In rc.wireless richiamo lo script così:

--------->8-----------

...
if [ "$2" = "start" ]; then # If starting up...
        . /etc/rc.d/rc.netconfig ${1} # First ask user which zone...
fi
...

-----------8<----------

${1} contiene l'interfaccia wlanX.

Praticamente lo script lancia un "iwlist scan" per identificare le reti
wifi disponibili, crea una lista adatta per "dialog" e chiede a quale
rete connettersi. l'ESSID della rete viene scritto in un file che poi
corrisponderà alla relativa configurazione presente in rc.inet1.conf

Allora, lo script funzionerebbe se non avessi problemi con iwconfig.

Idee su come risolvere ? Grazie !





Maggiori informazioni sulla lista Tecnica