光猫长期运行,会导致缓存负荷过多,时间久了网会慢,设置定时重启刷新

记得有一次,光猫稳定一个月了,到后面网直接加载不出来了,重启下网就来了

需求

  1. 定时重启光猫,路由器同理
  2. 如果你家光猫,有定时重启功能,那可以跳过此文章
  3. 这里我家是有软路由,这里使用Py脚本实现功能,放在软路由上运行得

抓包分析

这就只能手动重启
20218220132.PNG

抓重启按钮看请求

20218220136.PNG

可以看到请求了/deviceRestart.cmd参数
deviceRestart:中文意思 设备重启
后面得.cmd怀疑是代码执行
timeStamp登录会话ID
有可能在后台执行了reboot重启命令,光猫路由器也都是基于Linux内核的

经测试,只要登录后发送POST 请求到/deviceRestart.cmd,就能重启光猫

登录抓包

必须在登录的条件下才能重启光猫

20218220154.PNG

看图
登录用户参数是: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
分 时 日 月 周 用户 命令
最后修改:2021 年 08 月 27 日
如果觉得我的文章对你有用,请随意赞赏