#! /bin/bash # Originally contributed by Neuro: http://bbs.archlinux.org/viewtopic.php?pid=278148#p278148 . /usr/lib/network/network.subr . /usr/lib/network/wireless.subr . /etc/rc.conf . /etc/rc.d/functions # wifi_auto # autoconnect wireless interface # $1 - wireless interface wifi_auto() { interface=$1; stat_busy "Scanning for networks" ifconfig $interface up networks="$(list_networks $interface)" if [[ ! "$networks" ]]; then stat_append "- No networks available." stat_fail exit 1 fi # Loop through all the found essid's, then find a matching profile. while read essid; do for network in $(list_profiles); do load_profile $network if [[ "$CONNECTION" = "wireless" && "$essid" = "$ESSID" && "$interface" = "$INTERFACE" ]]; then found=$network fi # Clear out any variables set by the profile . /usr/lib/network/${CONNECTION}.subr ${CONNECTION}_clean_scope done done < $networks if [[ "$found" ]]; then netcfg $found exit $? fi stat_append "- No profiles matched the found networks" stat_fail exit 1 } if [[ $(id -u) -ne 0 ]]; then err "This script needs to be run with root priviledges" exit 1 fi if [[ -z $1 ]]; then err "Please supply an interface to connect" exit 1 fi wifi_auto $1