OpenWrt计划任务实现天翼网关自动化重启 📅 2026/6/29 17:23:52 1. 为什么需要自动化重启天翼网关家里用天翼网关的朋友可能都遇到过这样的问题用着用着网速就变慢了打开管理页面一看内存占用都快爆表了。官方提供的管理界面和小翼管家App里明明有定时重启功能但设置后就是不生效简直让人抓狂。作为一个折腾网络多年的老玩家我发现定期重启网关确实能显著提升网络稳定性特别是对于7×24小时运行的设备来说。天翼网关本质上也是一台小型Linux设备长时间运行后难免会出现内存泄漏、连接数堆积等问题。我在实际测试中发现连续运行两周不重启的网关内存占用能飙升到90%以上这时候就会出现网页加载慢、视频卡顿、游戏延迟高等各种问题。而手动重启虽然能解决问题但谁记得住每天凌晨去按那个小小的重启按钮呢2. OpenWrt计划任务系统简介OpenWrt作为一款强大的路由器操作系统其内置的Cron计划任务系统就是我们实现自动化重启的利器。这个系统源自Unix/Linux的经典任务调度工具可以精确到分钟级别执行各种任务。我特别喜欢它的灵活性你可以设置每天、每周、每月甚至更复杂的时间规则。在OpenWrt上计划任务有两种配置方式一种是直接编辑/etc/crontab文件另一种是通过Web管理界面中的系统-计划任务来可视化配置。考虑到易用性我建议新手先从Web界面入手等熟悉了再尝试直接编辑配置文件。不过无论哪种方式底层原理都是一样的都是通过cron守护进程来执行我们设定的任务。3. 准备重启脚本3.1 脚本编写要点要让OpenWrt能够控制天翼网关重启我们需要编写一个能够模拟登录网关管理页面并触发重启操作的Shell脚本。这个脚本的核心是使用curl命令与网关的Web接口进行交互。经过多次测试和调整我总结出了最稳定的脚本版本#!/bin/sh GW_IP192.168.1.1 # 改为你的网关IP USERNAMEuser # 改为你的用户名 PASSWORDpass # 改为你的密码 # 登录获取cookies和token login_resp$(curl -s -L http://${GW_IP}/cgi-bin/luci \ -X POST \ -c /tmp/gw_cookies.txt \ -d username${USERNAME}psd${PASSWORD}) # 提取token token$(echo ${login_resp} | sed s/{/\n/g | grep token | awk /realRestart/{print $2} | sed $s/\//g) # 执行重启 reboot_resp$(curl -s -b /tmp/gw_cookies.txt \ http://${GW_IP}/cgi-bin/luci/admin/reboot \ --data token${token}) # 检查结果 if [ $? -eq 0 ]; then logger -t 天翼网关重启 重启指令发送成功 else logger -t 天翼网关重启 重启失败请检查网络连接 fi这个脚本比原始版本增加了错误处理和日志记录功能使用logger命令将执行结果写入系统日志方便后续排查问题。3.2 脚本部署步骤使用SSH连接到OpenWrt路由器推荐使用Putty或Termius创建脚本文件touch /usr/bin/tyReboot.sh编辑脚本vi /usr/bin/tyReboot.sh按i进入编辑模式粘贴上述脚本内容修改IP地址、用户名和密码为你网关的实际信息按ESC退出编辑模式输入:wq保存退出赋予执行权限chmod x /usr/bin/tyReboot.sh这里有个小技巧如果你不熟悉vi编辑器可以先在本地电脑上用文本编辑器写好脚本然后使用scp命令上传到路由器scp tyReboot.sh root路由器IP:/usr/bin/4. 配置计划任务4.1 通过Web界面配置对于新手来说通过OpenWrt的Web界面配置计划任务是最简单的方式登录OpenWrt管理页面通常是http://192.168.1.1导航到系统→计划任务在文本框中添加以下内容59 5 * * * sleep 60 /usr/bin/tyReboot.sh点击提交保存设置这行配置的意思是每天凌晨5:59分执行任务先等待60秒然后运行我们的重启脚本。为什么要加sleep 60这是为了避免整点执行时可能出现的网络拥塞问题。4.2 直接编辑crontab如果你更喜欢命令行方式可以直接编辑crontab# 编辑root用户的crontab crontab -e在打开的文件末尾添加同样的任务行保存退出即可。OpenWrt会自动加载新的配置无需重启服务。5. 测试与排错5.1 手动测试脚本在设置自动任务前强烈建议先手动测试脚本是否正常工作# 手动执行脚本 /usr/bin/tyReboot.sh # 查看执行日志 logread | grep 天翼网关重启如果看到重启指令发送成功的日志同时观察到天翼网关确实重启了说明脚本工作正常。5.2 常见问题排查脚本权限问题确保脚本有可执行权限chmod xcurl命令缺失如果报错curl找不到需要安装curl包opkg update opkg install curl登录失败检查IP、用户名和密码是否正确特别是注意密码中的特殊字符token提取失败天翼网关的Web接口可能会更新需要调整sed/awk命令我在实际部署时遇到过最棘手的问题是网关固件升级后API接口变了导致脚本失效。这时候需要重新分析网页源码调整token提取逻辑。建议每隔几个月检查一次脚本是否仍然有效。6. 进阶优化建议6.1 增加随机延迟如果你有多台设备都需要定时重启可以考虑增加随机延迟避免所有设备同时重启导致网络波动# 在0-300秒之间随机延迟 RAND_DELAY$((RANDOM % 300)) 59 5 * * * sleep $RAND_DELAY /usr/bin/tyReboot.sh6.2 添加执行条件可以进一步优化脚本只在网关内存使用率过高时才执行重启#!/bin/sh # 获取网关内存使用率 mem_usage$(curl -s http://${GW_IP}/cgi-bin/luci/admin/status | grep 内存使用 | awk {print $3} | tr -d %) # 只在内存使用超过80%时重启 if [ $mem_usage -gt 80 ]; then # 原有的重启逻辑 fi6.3 邮件通知功能如果你想收到重启成功的通知可以集成邮件发送功能。首先安装邮件工具opkg update opkg install msmtp然后在脚本中添加发送邮件的代码。这样每次网关重启后你都能收到确认邮件真正做到心中有数。