最近将家里的路由器从 小米
换成了 京东云无线宝
。换完后发现新路由器不支持设备的定时断网了。对于有小朋友的家庭,定时断网可以很好的帮助小朋友控制上网时间。好在新入的这款路由器基于 OpenWrt
开发,经过几天的研究,顺利的搞定了定时断网功能。
开启路由器的SSH
注:2023-10 近期路由器被自动升级了。网上的开门方法全部失效,只能尝试TTL开门了。
开始折腾的第一步是搞定路由器的SSH。SSH登录到路由器后就可以随意折腾了。
由于京东云官方的封堵,不同版本固件的SSH开启方式有所不同。
1.5.40r2181<=
郑羊羊咩的窝-京东云
r2262<
京东云无线宝r2262之前固件版本开SSH
r2279<
京东云无线宝升级r2262固件后打开SSH
我拿到的这台路由器的固件版本很老,直接采用第一个方法开启SSH。具体方法如下:
登录京东云,打开f12控制台,将下面的代码贴入浏览器控制台并运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $.ajax({
url: "/jdcapi" ,
async : false ,
data: JSON.stringify({
jsonrpc: "2.0" ,
id: 1,
method: "call" ,
params: [
$.cookie( "sessionid" ),
"service" ,
"set" ,
{
"name" : "dropbear" ,
"instances" : { "instance1" : { "command" : [ "/usr/sbin/dropbear" ]}}
}
]
}),
dataType: "json" ,
type: "POST"
})
|
设备定时断网方案
OpenWrt系统通常自带 web 管理界面 LuCI
,即使没带也可自行安装。如果有 LuCI
,通过 LuCI
丰富的插件系统,可以轻松的实现上网时间的管控。
京东的这款路由器毕竟不是完整的OpenWrt系统,无法直接安装 LuCI
。为了设备的稳定性,保险起见没有继续折腾 LuCI
。研究后发现京东云路由器的自带的黑明单功能是通过修改设备 /etc/config/wireless
配置文件实现,于是有了下面的方案。
- 使用
uci
命令修改 wireless 配置文件,将需要管控的设备加入/移出 Wi-Fi 黑明单。
- 使用 crontab 创建定时任务,实现定时控制。
- 在路由器的黑明单中无法查看到通过修改 wireless 加入黑明单的设备。但可以通过将设备加入黑名单再移除的方式对设备进行临时解禁。
具体操作步骤
登录路由器
开始路由器的 SSH 登录功能,使用 SSH 客户端登录路由器。用户名为 root
,密码为路由器的管理密码。
ssh root@jdcloudwifi.com
创建将设备加入黑明单的相关脚本
1. 创建目录 /scripts
。我们自己的脚本都将放到该目录。
1 2 | mkdir -p /scripts
cd /scripts
|
2. 将下列脚本复制到 /scripts
目录,并使用命令 chmod +x /scripts/*.sh
为脚本添加可执行权限。
disable-wifi.sh
1 2 3 4 5 6 7 | #!/bin/sh
uci add_list wireless.ath0.maclist= "$1"
uci add_list wireless.ath1.maclist= "$1"
uci commit wireless
wifi reload
|
enable-wifi.sh
1 2 3 4 5 6 | #!/bin/sh
uci del_list wireless.ath0.maclist= "$1"
uci del_list wireless.ath1.maclist= "$1"
uci commit wireless
wifi reload
|
disable-tv.sh
1 2 3 | #!/bin/sh
/scripts/disable-wifi .sh dd : dd : dd : dd : dd : dd
|
enable-tv.sh
1 2 | #!/bin/sh
/scripts/enable-wifi .sh dd : dd : dd : dd : dd : dd
|
3. 执行 crontab -e
编辑系统定时任务。
1 2 3 4 | 0 8 * * 1-5 /scripts/disable-tv .sh
0 18 * * 1-5 /scripts/enable-tv .sh
|