#! /bin/bash # # wifi Bring up Wifi networking. Suited for WPA-PSK Wifi networks # # P. Kadionik 2006/01/04 # # # Source function library. . /etc/init.d/functions export PATH=/usr/local/sbin:$PATH #IF=$1 # Your wifi interface: ethx, athx, wlanx... IF=eth1 AUTH=NONE for NET in `iwlist $IF scan 2>/dev/null | grep ESSID | cut -d '"' -f 2` do case $NET in "mon_wifi_wpa") # Place all your WPA Access Point's ssids here like this "1AP"|"2AP") AUTH=WPA iwconfig $IF essid $NET ;; "mon_wifi_none") # Place all OPEN your Access Point's ssids here like this "1AP"|"2AP") AUTH=NONE iwconfig $IF essid $NET ;; esac done case $AUTH in NONE) dhclient $IF ;; WPA) killall wpa_supplicant 2>/dev/null # wpa_supplicant is executed for WPA encryption # Old kernel interface ipw # wpa_supplicant -wB -i $IF -c /etc/wpa_supplicant.conf -D ipw # New kernel interface wext wpa_supplicant -wB -W -i $IF -c /etc/wpa_supplicant.conf -D wext TIMEOUT=20 INTERVAL=5 STATUS=1 TIME=0 sleep $INTERVAL # Try to authenticate for $TIMEOUT secs while [[ $STATUS == 1 && $TIME -lt $TIMEOUT ]] do wpa_cli status | grep AUTHENTICATED 2> /dev/null STATUS=$? echo $STATUS TIME=$(($TIME + $INTERVAL)) sleep $INTERVAL done # If authenticated, start dhclient if [[ $STATUS -ne 1 ]] then # dhclient3 -pf /var/run/dhclient.$IF.pid -lf /var/run/dhclient.$IF.leases $IF dhclient $IF fi ;; esac exit 0