我正在使用带有 DD-wrt 固件的 buffalo 路由器 WZR-HP-G300NH。互联网有时会变慢,设备甚至无法加入 WiFi。如果我重新启动路由器,一切都会恢复正常。这种情况每天都会发生几次。是否有任何脚本可以检测路由器中的问题并自动重启?
答案1
是的你可以!
- 通过管理 > 管理页面在内部闪存上启用 JFFS 支持。
- 通过 SSH 连接到您的路由器并将以下内容保存在 中
/jffs/checkConnection.sh
。
这是我使用的精简版,当互联网恢复时,它还会向我发送 slack 消息。基本上,我们正在 ping 一个众所周知的 URL。如果它响应,则互联网已启动,否则已关闭。如果连接被视为已关闭,我们将当前时间戳存储在一个文件中(如果我们尚未这样做)并重新启动。当连接恢复时,我们会读取该文件并记录连接关闭的时间。各种日志语句和回显都在那里,因此无论您是手动运行脚本、通过管道传输到日志文件还是通过 CRON,您都可以获得输出。
#!/bin/sh
PATH="/bin:/usr/bin:/sbin:/usr/sbin:/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin"
ping -c4 google.com > /dev/null
if [ $? != 0 ]; then
if [ ! -f /jffs/rebooted ]; then
echo `date '+%m/%d/%Y %I:%M %p'` > /jffs/rebooted
fi
message="Connection down, rebooting..."
logger -s -t "custom.checkConnection" "$message"
echo $message
reboot
elif [ -f /jffs/rebooted ]; then
ts=`cat /jffs/rebooted`
message="Internet restored, was down since $ts"
rm -rf /jffs/rebooted
logger -t "custom.checkConnection" "$message"
echo "$message"
else
echo "Everything looks good!"
fi
您可以手动运行它,也可以设置 CRON 任务每 5 分钟左右运行一次:
*/5 * * * * root /jffs/checkConnection.sh