#!/bin/sh
#apclii0是我设置的STA模式下的网络设备,该脚本就是3秒扫描一次,判断STA模式下关联路由器是否有断网,
#1、wifi_name是当时STA模式下关联的路由器名称,判断当前STA是否有关联到热点
#2、如果STA没有关联热点,判断当前配置的热点名称是什么,sta_name就是配置热点名称
#3、iwlist就是扫描当前的热点,是否有跟当前配置关联的热点名称一样的,如果一样就切换自己信道进行关联
scanwifi()
{
if [ "$1" == "" ];then
echo "para is null"
return $1
else
iwpriv apclii0 set SiteSurvey=0
sleep 1
WLAN=`iwpriv apclii0 get_site_survey | grep -w $1`
fi
if [ "$WLAN" != "" ];then
scan_name=`iwpriv apclii0 get_site_survey | grep -w $1 | sed -n 1p | awk '{print $1}'`
channel_value=`iwlist apclii0 channel | grep Channel | awk '{print $2}'`
channel_name=${channel_value#*=}
if [ "$channel_name" != "$scan_name" ];then
iwpriv apclii0 set Channel=$scan_name
#echo "iwpriv apclii0 set Channel=$scan_name"
fi
echo "channel:current is $channel_name scan is $scan_name"
#重新连接wifi
ifconfig br-wifi_5g down
sleep 1
ifconfig br-wifi_5g up
echo "ifconfig br-wifi_5g up"
else
echo "not find $1"
fi
}
while [ 1 ]
do
wifi=`iwconfig apclii0 | grep apclii0 | awk '{print $4}' | sed 's/\"//g'`
wifi_name=${wifi#*:}
if [ "$wifi_name" == "" ];then
echo "disconnect"
sta_name=`cat /etc/config/wireless | grep ApCliSsid | awk '{print $3}' | sed $'s/\'//g'`
scanwifi $sta_name
fi
sleep 3
done
wifi自动切换信道,并进行重启对应的接口
最新推荐文章于 2024-03-13 18:07:19 发布