- 这个脚本通过不断检测有线网络和4G网络的连通性来动态调整默认路由。
- 如果两个网络都可用,则优先使用4G网络。
- 如果只有一个网络可用,则使用该网络。
- 如果两个网络都不可用,则每秒钟检测一次,连续30次检测失败后重启设备。
#!/bin/bashcount=0
while true; do# 检查网络接口状态echo "检查网络接口状态..."ip link show# 测试有线网络连接echo "测试有线网络连接..."wired_ping=$(ping -c 1 -I eth0 www.baidu.com | grep "1 received" | wc -l)# 测试4G网络连接echo "测试4G网络连接..."usb0_ping=$(ping -c 1 -I usb0 www.baidu.com | grep "1 received" | wc -l)# 根据ping结果设置路由表if [ $usb0_ping -eq 1 ] && [ $wired_ping -eq 1 ]; thenecho "两个网络都可用,设置4G网络优先"ip route add default via $(ip route show dev usb0 | grep "default" | awk '{print $3}') dev usb0breakelif [ $usb0_ping -eq 1 ]; thenecho "只有4G网络可用,设置为默认网络"ip route add default via $(ip route show dev usb0 | grep "default" | awk '{print $3}') dev usb0breakelif [ $wired_ping -eq 1 ]; thenecho "只有有线网络可用,设置为默认网络"ip route add default via $(ip route show dev eth0 | grep "default" | awk '{print $3}') dev eth0breakelseecho "两个网络都不可用"count=$((count+1))if [ $count -ge 30 ]; thenecho "连续30次检测都没有网络连接,重启设备"rebootfisleep 1fi
done