光猫长期运行,会导致缓存负荷过多,时间久了网会慢,设置定时重启刷新
记得有一次,光猫稳定一个月了,到后面网直接加载不出来了,重启下网就来了
需求
- 定时重启光猫,路由器同理
- 如果你家光猫,有定时重启功能,那可以跳过此文章
- 这里
我家是有软路由
,这里使用Py脚本实现功能,放在软路由上运行得
抓包分析
这就只能手动重启
抓重启按钮看请求
可以看到请求了/deviceRestart.cmd
参数
deviceRestart:中文意思 设备重启
后面得.cmd
怀疑是代码执行timeStamp
登录会话ID
有可能在后台执行了reboot
重启命令,光猫路由器也都是基于Linux内核的
经测试,只要登录后发送POST
请求到/deviceRestart.cmd
,就能重启光猫
登录抓包
必须在登录的条件下才能重启光猫
看图
登录用户参数是:usernamer
登录提交密码参数:psd
登录提交时间:date
经测试发现登录无需Cookie
,会记录局域网设备IP,跟UA请求头,下次方便可直接访问,但过一段时间就过期了,需要重新登录
必须参数
登录参数
登录请求地址
/login.cgi?
要登录用户名+密码+s日期时间
username=用户名&psd=密码&data=日期
重启参数
登录状态下直接请求地址即重启
/deviceRestart.cmd
Python3实现
设置URL地址
功能接口
#登录
login_url = 'http://192.168.1.1/login.cgi?'
#退出登录
logout_url = 'http://192.168.1.1/logout.cgi'
#重启
run_reboot = 'http://192.168.1.1/deviceRestart.cmd'
登录参数
#设置登录用户密码
username="username"
password="ailnd"
#设置UA请求头
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0"
}
#设置参数
data = {'username': username,'psd': password,'date': time.strftime("%Y%m%d")}
#取时间格式:20210822
#%y年,%m月,%d天
拼凑设置登录请求
函数:urllib.request.Request
http = urllib.request.Request(url=login_url+urllib.parse.urlencode(data),headers=headers)
发送登录请求
函数:urllib.request.urlopen
#发送登录请求
http_run = urllib.request.urlopen(http)
#打印返回内容
print(http_run.read().decode("utf-8"))
重启
登录5秒后,进行重启
#休眠5秒后,执行重启请求
time.sleep(5)
urllib.request.urlopen(run_reboot)
完整脚本
#python3
#引用time模块
import time
#引用urllib模块
import urllib.request
#设置登录用户密码
username="username"
password="ailnd"
#功能接口
#登录
login_url = 'http://192.168.1.1/login.cgi?'
#退出登录
logout_url = 'http://192.168.1.1/logout.cgi'
#重启
run_reboot = 'http://192.168.1.1/deviceRestart.cmd'
#定义UA请求头
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0"
}
data = {'username': username,'psd': password,'date': time.strftime("%Y%m%d")}
#打印登录URl
#print(login_url+urllib.parse.urlencode(data))
#登录信息
http = urllib.request.Request(url=login_url+urllib.parse.urlencode(data),headers=headers);
#发送登录请求
http_run = urllib.request.urlopen(http);
#打印返回内容
print(http_run.read().decode("utf-8"));
#休眠5秒后,执行重启请求
time.sleep(5);
urllib.request.urlopen(run_reboot);
#print(login_url+urllib.parse.urlencode(data));
定时执行
定时去执行脚本,完成定时重启
在Linux下的crontab
计划任务软件
末尾添加
sudo vim /etc/crontab
每三天执行脚本,重启光猫
* * * 3 * root /usr/bin/python3.6 /data/py/login.py > /data/logs/login.log
任务格式
* * * * * user command
分 时 日 月 周 用户 命令