书房和客厅各有一个wifi热点,经常移动widora到这两个地方,感觉手动加入wifi很不方便,想找个办法让widora在开机时候根据信号强度大小自动选择接入,借用了一下connect2ap的代码,对前面部分做了一下修改并改名为auto2ap, 如下:
------------------------- auto2ap.sh ----------------------------
#!/bin/sh
#----- SSIDs and PASSWDs -------
SSID1=ChinaNet-Midas1
PASS1=xxxxxxxxxxxx
SSID2=ChinaNet-Midas2
PASS2=xxxxxxxxxxxx
#-------- default ssid ---------
ussid=$SSID1
upass=$PASS1
#—=--- signal density --------
SIG_SSID1=0
SIG_SSID2=0
OUTPUT=""
until [ -n “$MY_SSID” ];do
#------- search WIFI ---------------
iwpriv ra0 set SiteSurvey=0
sleep 5
OUTPUT=iwpriv ra0 get_site_survey| grep '^[0-9]'
##---------- get ssids ---------------
MY_SSID=echo "$OUTPUT" | grep -E 'ChinaNet-Midas1|ChinaNet-Midas2'
#–NO blank beside ‘|’
echo “$MY_SSID”
done
SSID1_STR=echo "$MY_SSID" | grep ChinaNet-Midas1
SSID2_STR=echo "$MY_SSID" | grep ChinaNet-Midas2
#----------- compare signal density -------
if [ -n “$SSID1_STR” ];then
SIG_SSID1=echo "$SSID1_STR" | awk '{ print $6 }'
echo ‘----- ChinaNet-Midas1 found! -----’
fi
if [ -n “$SSID2_STR” ];then
SIG_SSID2=echo "$SSID2_STR" | awk '{ print $6 }'
echo ‘----- ChinaNet2cPv found! -----’
fi
echo ‘SIG_SSID1=’"$SIG_SSID1"
echo ‘SIG_SSID2=’"$SIG_SSID2"
if [ $SIG_SSID1 -gt $SIG_SSID2 ];then
echo “SIG_SSID1 > SIG_SSID2”
ussid=$SSID1
upass=$PASS1
else
echo “SIG_SSID1 <= SIG_SSID2”
ussid=$SSID2
upass=$PASS2
fi
echo ussid="$ussid"
echo upass="$upass"
#----------- 以下部分保持不变 ----------
while read line
…
把这个脚本放入 /etc/rc.local中,使其在开机时执行:
…
/bin/auto2ap.sh
/etc/init.d/network restart
…
试验了一下可以正常工作,不过只能在开机时自动加入, 移动的时候无法自动切换。 抛砖引玉,希望大神们给出更好的方法。