# Uses wpa_supplicant to check for association to a network # wpa_check interface [timeout] wpa_check() { local timeout=0 INTERFACE=$1 TIMEOUT=${2:-15} while [[ $timeout -lt $TIMEOUT ]]; do ( # Sometimes wpa_supplicant isn't ready so silence errors for 2s only to avoid hiding real errors if [[ $timeout -lt 2 ]]; then eval `wpa_cli status 2> /dev/null|grep wpa_state` else eval `wpa_cli status|grep wpa_state` fi [[ "$wpa_state" = "COMPLETED" ]] ) && return 0 sleep 1 let timeout++ done echo "$wpa_state" wpa_cli terminate >/dev/null 2>&1 return 1 } start_wpa() { INTERFACE="$1"; WPA_CONF="$2"; WPA_OPTS="$3" wpa_supplicant -B -P/var/run/wpa_supplicant_${INTERFACE}.pid -i"${INTERFACE}" -c "$WPA_CONF" $WPA_OPTS sleep 1 if [[ ! -f "/var/run/wpa_supplicant_${INTERFACE}.pid" ]]; then return 1 fi } stop_wpa() { wpa_cli terminate &> /dev/null if [[ -f /var/run/wpa_supplicant_$1.pid ]]; then kill $(cat /var/run/wpa_supplicant_$1.pid) &>/dev/null & fi } # vim: set ts=4 et sw=4 ft=sh: