问题:
笔记本安装有调试环境,通过wifi联网,另一台电脑远程登录笔记本进行调试。如果比较本网络断网,就无法调试了,需要人工重置网络。
解决:
自己写一个重置网络的脚本net-restart.sh,开机执行,每CHECK_INTERVAL秒检测网络,如果外网不通,就重启wifi。
步骤一:vim /etc/rc.local最后增加一行
/etc/net-restart.sh &
unbuntu开机后自动执行rc.local,所以在文件末尾执行我们自己的脚本。
步骤二:更新/etc/net-restart.sh文件
方法一:用nmcli命令检查外网
#!/bin/bash
CHECK_INTERVAL=10
sleep 300
while [ true ];do
state=`nmcli n c`
if [[ $state != "full" ]];then
nmcli r wifi on
service network-manager restart
echo "service network-manager restart"
fi
sleep $CHECK_INTERVAL
done
方法二:用ping命令检测外网
#!/bin/bash
CHECK_INTERVAL=10
function check_net_status() {
ping -c 3 -W 5 $1 &> /dev/null
if [ $? -eq 0 ]
then
return 0
else
return -1
fi
}
sleep 300
while [ true ];do
check_net_status www.baidu.com
if [ $? -ne 0 ];then
nmcli r wifi on
service network-manager restart
echo "service network-manager restart"
fi
sleep $CHECK_INTERVAL
done
nmcli命令说明:
1)nmcli:network manager command line
2)nmcli n c:即nmcli networking connectivity
?????返回值full(可上网),limited(联网,但无法上网)、portal(联网,但需要登录认证才能上网)、none(未联网)、unknown。
3)nmcli r wifi on:即nmcli radio wifi on,打开网络
nmcli参数比较多,可通过man nmcli获取详细信息。
|