74 lines
1.5 KiB
Bash
74 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
#
|
|
# Try to setup Kit !
|
|
#
|
|
|
|
function scanWifi() {
|
|
local iface=${1}
|
|
iwinfo ${iface} scan
|
|
return ${?}
|
|
}
|
|
|
|
function getWifiCell()
|
|
{
|
|
local iface=${1}
|
|
local ssidPrefix=${2}
|
|
res=$(scanWifi ${iface} | grep -B 1 "ESSID: \"${ssidPrefix}")
|
|
if [[ "${res}" == "Scanning not possible" ]] || [[ "${res}" == "" ]]
|
|
then
|
|
for try in $(seq 0 10)
|
|
do
|
|
sleep 5
|
|
res=$(scanWifi ${iface} | grep -B 1 "ESSID: \"${ssidPrefix}")
|
|
if [[ "${res}" == "Scanning not possible" ]] || [[ "${res}" == "" ]]
|
|
then
|
|
continue
|
|
else
|
|
echo ${res}
|
|
return 0
|
|
fi
|
|
done
|
|
echo "Error scanning wifi networks !"
|
|
return 2
|
|
else
|
|
echo ${res}
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
function connectWifi() {
|
|
local iface=${1}
|
|
local ssidPrefix=${2}
|
|
local wpa=${3}
|
|
|
|
local cell=$(getWifiCell ${iface} ${ssidPrefix})
|
|
if [[ $? -ne 0 ]]
|
|
then
|
|
echo "Error on wifi scan !"
|
|
exit 12
|
|
fi
|
|
local ssid=$(echo ${cell} | awk '{print $7}' | sed -e 's/"//g')
|
|
local cellMAC=$(echo ${cell} | awk '{print $5}' | sed -e 's/"//g"')
|
|
|
|
set -x
|
|
uci delete wireless.@wifi-iface[1]
|
|
uci add wireless wifi-iface
|
|
uci set wireless.@wifi-iface[1].network="EmlidReach"
|
|
uci set wireless.@wifi-iface[1].ssid="${ssid}"
|
|
uci set wireless.@wifi-iface[1].encryption="psk2"
|
|
uci set wireless.@wifi-iface[1].device="radio1"
|
|
uci set wireless.@wifi-iface[1].mode="sta"
|
|
uci set wireless.@wifi-iface[1].bssid="${cellMAC}"
|
|
uci set wireless.@wifi-iface[1].key="${wpa}"
|
|
uci commit
|
|
reload_config
|
|
sleep 20
|
|
set +x
|
|
udhcpc -i ${iface}
|
|
}
|
|
|
|
# interface SSID_PREFIX Network_KEY
|
|
connectWifi "$1" "$2" "$3"
|
|
|