最近将家里的路由器从 小米
换成了 京东云无线宝
。换完后发现新路由器不支持设备的定时断网了。对于有小朋友的家庭,定时断网可以很好的帮助小朋友控制上网时间。好在新入的这款路由器基于 OpenWrt
开发,经过几天的研究,顺利的搞定了定时断网功能。
开启路由器的SSH
注:2023-10 近期路由器被自动升级了。网上的开门方法全部失效,只能尝试TTL开门了。
开始折腾的第一步是搞定路由器的SSH。SSH登录到路由器后就可以随意折腾了。
由于京东云官方的封堵,不同版本固件的SSH开启方式有所不同。
1.5.40r2181<=
郑羊羊咩的窝-京东云
r2262<
京东云无线宝r2262之前固件版本开SSH
r2279<
京东云无线宝升级r2262固件后打开SSH
我拿到的这台路由器的固件版本很老,直接采用第一个方法开启SSH。具体方法如下:
登录京东云,打开f12控制台,将下面的代码贴入浏览器控制台并运行。
$.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
。我们自己的脚本都将放到该目录。
mkdir -p /scripts
cd /scripts
2. 将下列脚本复制到 /scripts
目录,并使用命令 chmod +x /scripts/*.sh
为脚本添加可执行权限。
disable-wifi.sh
#!/bin/sh
# 禁止设备连接 Wi-Fi
# 使用 `cat /etc/config/wireless` 查看无线配置。通过 `option ssid` 找到对应的 Wi-Fi 配置项名称。注: 2.4G 和 5G 两个热点都需要配置。
uci add_list wireless.ath0.maclist="$1"
uci add_list wireless.ath1.maclist="$1"
uci commit wireless
wifi reload
enable-wifi.sh
#!/bin/sh
# 允许设备连接 Wi-Fi
uci del_list wireless.ath0.maclist="$1"
uci del_list wireless.ath1.maclist="$1"
uci commit wireless
wifi reload
disable-tv.sh
#!/bin/sh
# 将 dd:dd:dd:dd:dd:dd 换成需要加入黑名单的设备的 MAC 地址
/scripts/disable-wifi.sh dd:dd:dd:dd:dd:dd
enable-tv.sh
#!/bin/sh
/scripts/enable-wifi.sh dd:dd:dd:dd:dd:dd
3. 执行 crontab -e
编辑系统定时任务。
# 周一到周五,8点关闭电视网络
0 8 * * 1-5 /scripts/disable-tv.sh
# 周一到周五,18点开启电视网络
0 18 * * 1-5 /scripts/enable-tv.sh