当前位置: 首页 > news >正文

OpenWrt计划任务实现天翼网关自动化重启

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_IP="192.168.1.1" # 改为你的网关IP USERNAME="user" # 改为你的用户名 PASSWORD="pass" # 改为你的密码 # 登录获取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 脚本部署步骤

  1. 使用SSH连接到OpenWrt路由器(推荐使用Putty或Termius)
  2. 创建脚本文件:touch /usr/bin/tyReboot.sh
  3. 编辑脚本:vi /usr/bin/tyReboot.sh
  4. i进入编辑模式,粘贴上述脚本内容
  5. 修改IP地址、用户名和密码为你网关的实际信息
  6. ESC退出编辑模式,输入:wq保存退出
  7. 赋予执行权限:chmod +x /usr/bin/tyReboot.sh

这里有个小技巧:如果你不熟悉vi编辑器,可以先在本地电脑上用文本编辑器写好脚本,然后使用scp命令上传到路由器:

scp tyReboot.sh root@路由器IP:/usr/bin/

4. 配置计划任务

4.1 通过Web界面配置

对于新手来说,通过OpenWrt的Web界面配置计划任务是最简单的方式:

  1. 登录OpenWrt管理页面(通常是http://192.168.1.1)
  2. 导航到"系统"→"计划任务"
  3. 在文本框中添加以下内容:
59 5 * * * sleep 60 && /usr/bin/tyReboot.sh
  1. 点击"提交"保存设置

这行配置的意思是每天凌晨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 常见问题排查

  1. 脚本权限问题:确保脚本有可执行权限(chmod +x)
  2. curl命令缺失:如果报错curl找不到,需要安装curl包:opkg update && opkg install curl
  3. 登录失败:检查IP、用户名和密码是否正确,特别是注意密码中的特殊字符
  4. token提取失败:天翼网关的Web接口可能会更新,需要调整sed/awk命令

我在实际部署时遇到过最棘手的问题是网关固件升级后API接口变了,导致脚本失效。这时候需要重新分析网页源码,调整token提取逻辑。建议每隔几个月检查一次脚本是否仍然有效。

6. 进阶优化建议

6.1 增加随机延迟

如果你有多台设备都需要定时重启,可以考虑增加随机延迟,避免所有设备同时重启导致网络波动:

# 在0-300秒之间随机延迟 RAND_DELAY=$((RANDOM % 300)) 59 5 * * * sleep $RAND_DELAY && /usr/bin/tyReboot.sh

6.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 # 原有的重启逻辑 fi

6.3 邮件通知功能

如果你想收到重启成功的通知,可以集成邮件发送功能。首先安装邮件工具:

opkg update opkg install msmtp

然后在脚本中添加发送邮件的代码。这样每次网关重启后,你都能收到确认邮件,真正做到心中有数。

http://www.jsqmd.com/news/1090769/

相关文章:

  • 软件投资决策化的项目选择与资源配置
  • 艾尔登法环存档迁移终极指南:三步解决存档丢失问题的完整解决方案
  • 数据科学与大数据技术毕业设计本科生方向推荐
  • Linux学习笔记5:socket通信
  • 终极指南:如何在Windows上免费搭建AirPlay 2投屏服务器
  • 如何15分钟完成专业级黑苹果EFI配置:OpCore-Simplify让复杂变简单
  • 上海交大技术转移硕士项目特色-全国首个MTT五力模型实践与生态全解
  • edgeR/limma 必做的 5 组验证图和 2 个判断原则
  • 古琴琴底结构名称及由来​
  • MySQL 索引设计的最佳实践
  • 高级自定义技巧:MeEdu在线教育系统核心功能深度解析
  • 鸿蒙 ArkTS 实战:Knowledge Tree 从状态建模到交互闭环完整解析
  • TPA2025D1 D类音频功放评估板实战:从核心原理到PCB布局设计
  • Three.js 程序化地形生成教程
  • PageAdmin CMS建站系统承载千万级内容和高并发的架构讲解
  • 第17周周报
  • MSP430 Timer_B捕获比较与UART通信实战:从寄存器到低功耗频率计
  • QQ音乐解析终极指南:三步解锁全网音乐资源
  • 上海小程序定制开发公司,哪家售后服务比较靠谱?
  • YgoMaster终极PvP对战指南:如何轻松实现局域网游戏王对战
  • 2025总结
  • OmenSuperHub:惠普暗影精灵性能控制终极指南
  • 老中医如何用AI学好五运六气——天辛大师谈实用技巧
  • Claude收紧访问政策:50%持股红线怎么理解
  • 国产高速数字化仪PCIe-7964R FPGA板卡(250M/16bit:4AI+2AO)兼容LabVIEW FPGA软件开发
  • QuantConnect Lean算法交易引擎:5步打造你的第一个量化交易策略
  • 7th [math] 2026.06.28
  • 一图看懂cache直接映射(涉略全相联、组相联)
  • 计算机毕业设计之儿童PTC管理系统的设计与实现
  • 从零到一:Awesome-Dify-Workflow如何解决AI工作流开发难题