[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