通过openwrt定时脚本重启天翼网关

路由器定时重启脚本

在一些网络环境中,路由器可能因为长时间运行或其他原因而出现卡顿或网络问题。为了确保路由器的稳定性,定期重启是一个有效的解决方案。本文将介绍如何通过SSH远程登录路由器,并使用wget命令编写一个定时重启脚本,最后通过crontab设置定时任务自动执行。

步骤 1: 远程登录路由器

首先,确保你的路由器防火墙已经开启22端口,这样我们才能通过SSH进行远程访问。

使用以下命令进行SSH登录:

ssh -oHostKeyAlgorithms=+ssh-rsa root@192.168.1.1

步骤 2: 创建重启脚本目录

在路由器中创建一个目录来存放重启脚本:

mkdir -p /usr/bin/restart-router

步骤 3: 创建并编辑重启脚本

使用touch命令创建一个名为tyReboot.sh的脚本文件,并确保其具有执行权限:

touch tyReboot.sh
chmod +x tyReboot.sh

编辑tyReboot.sh文件,并将以下内容粘贴到其中:

#!/bin/sh

# 删除日志文件
rm log.txt
rm res.txt
rm reboot.txt

# 记录日志
wget --method='POST' -a log.txt  --save-cookie='ck.txt'  --body-data='username=yourusername&psd=yourpassword' --max-redirect=0 --keep-session-cookies -d http://192.168.1.1/cgi-bin/luci

# 获取cookie中的sysauth值
sysauth=$(cat log.txt | grep 'Set-Cookie' | awk -F'sysauth=' '{print $2}' | cut -d';' -f1) 

echo "登录sysauth: $sysauth"

# 使用sysauth值获取响应内容
wget --method='GET' --header="Cookie: sysauth=$sysauth" -O res.txt -d http://192.168.1.1/cgi-bin/luci

# 提取token值
token=$(cat res.txt | sed 's/{/\n/g' | sed 's/}/\n/g' | grep token | awk -F"'" '/token/ {if (!printed) {print $2; printed=1}}')

echo "token: $token"

# 准备token进行路由器重启
mytoken='token='$token

# 提交重启请求
wget --method='POST' --header="Cookie: sysauth=$sysauth" -O reboot.txt --body-data="$mytoken" http://192.168.1.1/cgi-bin/luci/admin/reboot

if [ $? -ne 0 ]; then
    echo $mytoken reboot failed
else
    echo $mytoken rebooting!
fi

步骤 4: 设置定时任务

为了定期执行该脚本,我们可以使用crontab来设置定时任务。在路由器中,输入以下命令来编辑定时任务:

crontab -e

在打开的crontab编辑器中,添加以下行来设置每天凌晨4:59自动执行重启脚本:

59 4 * * * /usr/bin/restart-router/tyReboot.sh

使用crontab -l命令可以查看当前的定时任务列表。

总结

通过以上步骤,你可以轻松地实现路由器的定时重启。这个方法不仅简单高效,而且可以避免手动操作带来的麻烦。如果需要调整重启时间,只需修改crontab中的设置即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容