我需要偶尔重启路由器来修复互联网连接。我可以用脚本检测并自动重启吗?

我需要偶尔重启路由器来修复互联网连接。我可以用脚本检测并自动重启吗?

我正在使用带有 DD-wrt ​​固件的 buffalo 路由器 WZR-HP-G300NH。互联网有时会变慢,设备甚至无法加入 WiFi。如果我重新启动路由器,一切都会恢复正常。这种情况每天都会发生几次。是否有任何脚本可以检测路由器中的问题并自动重启?

答案1

是的你可以!

  1. 通过管理 > 管理页面在内部闪存上启用 JFFS 支持。
  2. 通过 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

相关内容