Linux_Openwrt _5G CPE(R500QGL) 路由狗,断网自动重启脚本
63
路由器:xiaomi r3G
固件:openwrt
5G模块:移远RM500Q-GL
问题:CPE模块出现假死,断网
1.创建脚本
mkdir /root/network_watchdog.sh
vim /root/network_watchdog.sh
2.编辑bash脚本
#!/bin/sh
# 定义日志文件路径
LOGFILE="/tmp/network_watchdog.log"
MAX_LOG_SIZE=10485760 # 10MB
# 记录当前时间到日志
echo "$(date): 检查网络连接..." >> "$LOGFILE"
# 检查日志文件大小,如果大于10MB,则清空日志文件
if [ -f "$LOGFILE" ]; then
LOGSIZE=$(wc -c < "$LOGFILE")
if [ "$LOGSIZE" -ge "$MAX_LOG_SIZE" ]; then
echo "$(date): 日志文件超过10MB,清空日志文件..." > "$LOGFILE"
fi
else
# 创建日志文件
touch "$LOGFILE"
fi
# Ping某个地址,检查网络连接状态
路由器:xiaomi r3G
固件:openwrt
问题:CPE模块出现假死,断网
1.创建脚本
mkdir /root/network_watchdog.sh
vim /root/network_watchdog.sh
2.编辑bash脚本
#!/bin/sh
# 定义日志文件路径
LOGFILE="/tmp/network_watchdog.log"
MAX_LOG_SIZE=10485760 # 10MB
# 记录当前时间到日志
echo "$(date): 检查网络连接..." >> "$LOGFILE"
# 检查日志文件大小,如果大于10MB,则清空日志文件
if [ -f "$LOGFILE" ]; then
LOGSIZE=$(wc -c < "$LOGFILE")
if [ "$LOGSIZE" -ge "$MAX_LOG_SIZE" ]; then
echo "$(date): 日志文件超过10MB,清空日志文件..." > "$LOGFILE"
fi
else
# 创建日志文件
touch "$LOGFILE"
fi
# Ping某个地址,检查网络连接状态
ping -c 1 223.5.5.5 > /dev/null 2>&1
# 如果ping失败,表示网络连接中断
if [ $? -ne 0 ]; then
echo "$(date): 网络中断,重启所有 /dev/ttyUSB* 设备..." >> "$LOGFILE"
for device in /dev/ttyUSB*; do
if [ -e "$device" ]; then
echo "$(date): 重启设备 $device" >> "$LOGFILE"
echo -e "AT+CFUN=0\r" > "$device"
sleep 2
echo -e "AT+CFUN=1\r" > "$device"
sleep 2
echo "$(date): $device 重启完成。" >> "$LOGFILE"
else
echo "$(date): 设备 $device 不存在。" >> "$LOGFILE"
fi
done
echo "$(date): 所有 /dev/ttyUSB* 设备已重启。" >> "$LOGFILE"
else
echo "$(date): 网络正常。" >> "$LOGFILE"
fi
脚本的运行原理如下:
变量定义:设置日志文件路径和最大大小(10MB)。
日志记录:记录当前时间和检查网络的信息。
文件大小检查:如果日志文件存在且超出10MB,则清空;如果不存在,则创建新文件。
网络检查:使用ping命令检测网络连接。如果失败,记录信息并重启所有/dev/ttyUSB*设备。
设备重启:对每个存在的USB设备发送AT命令断开连接并重启,并记录每一步操作。
状态记录:如果网络正常,记录"网络正常"的信息。 该脚本用于监控网络状态,自动重启设备以维持连接稳定。
3.创建运行任务
定时每五分钟运行一次
crontab -e
*/5 * * * * /root/network_watchdog.sh
End
Linux_Openwrt _5G CPE(R500QGL) 路由狗,断网自动重启脚本
http://localhost:8090/archives/linux_openwrt-_5g-cpe-r500qgl-lu-you-gou-duan-wang-zi-dong-chong-qi-jiao-ben