最初要做的是随时随地获取家里Wifi连接的设备状态,也就是有几台终端在线。
随着程序逐渐搭建完毕,顺手又加了一个远程控制手机录制直播的idea(因为功能早就做过附加工作量不大嗯哼)。
程序dex包已经编译好,接下来讲讲怎么部署环境吧。
需要什么
- 一台Android手机(可以不必Root)
- 安装Termux(需要wget/vi/sshd/curl/grep)
- 安装Termux:Tasker
- 安装Tasker
- 不咋会的可以看看前面的博文
- 一个Github账号
- 一个编译好的dex程序NinjaV4.dex
如何部署
Github
- 新建一个用于鉴权的token
- 新建一个Repo(可以是私有),例如
AbcTest
- 为了方便识别在线设备,添加对MAC地址的备注,如
online-devices/remarks.txt
2b:2b:2b:2b:2b:2b 我的PC 2b:2b:2b:2b:2b:2c 我的手机
Termux
- 将程序拷至Termux
#执行的时候请去掉注释 cd ~ mkdir -p ~/workspace/ninjaV4/config cd ~/workspace/ninjaV4/config #下载配置文件 wget -O crypto-js.min.js https://gitee.com/NiceLeee/NinjaV4/raw/master/src/resources/crypto-js.min.js wget -O app.config.sample https://gitee.com/NiceLeee/NinjaV4/raw/master/auto-install/app.config.sample ## 接下来将ninjaV4.dex复制到workspace cd ~/workspace/ninjaV4 wget -4 -O ninjaV4.dex https://github.com/nICEnnnnnnnLee/NinjaV4/releases/download/1.0.0/NinjaV4-1.0.0.dex
- 做好配置
cd ~/workspace/ninjaV4/config vi app.config
- 配置要点
# 监听端口,用于局域网内对设备的控制,如果更改,需要修改涉及到的Tasker脚本 httpServerPort = 8888 # 下载文件夹,程序有啥要下载的东西都放这里 downloadDir = download/ # token 用于访问github token = xxxxxxxx # 在线设备上传的位置 #例如访问{nICEnnnnnnnLee}的{AbcTest}仓库的{online-devices/onlines.txt}可以看到我的WiFi设备状态 url_onlineDevices = https://api.github.com/repos/nICEnnnnnnnLee/AbcTest/contents/online-devices/onlines.txt # 对MAC地址的备注,例如访问{nICEnnnnnnnLee}的{AbcTest}仓库的{online-devices/remarks.txt} url_markOfMacs = https://raw.githubusercontent.com/nICEnnnnnnnLee/AbcTest/master/online-devices/remarks.txt # 云端命令获取并执行的周期(单位:min) taskPeriod = 5 # 用于云端下发命令 url_taskToDo = https://raw.githubusercontent.com/nICEnnnnnnnLee/AbcTest/master/task/todo.txt # 用于命令执行情况上报 url_taskReport = https://api.github.com/repos/nICEnnnnnnnLee/AbcTest/contents/task/report.txt
- 写好Tasker运行脚本
mkdir -p ~/.termux/tasker cd ~/.termux/tasker echo "curl http://127.0.0.1:8888/onliner/status/upload" > wifi_status_upload.sh echo "exit" >> wifi_status_upload.sh echo "curl http://127.0.0.1:8888/cloud/run" > get_command_and_run.sh echo "exit" >> get_command_and_run.sh
- 运行
为了节省空间,直接将日志定位到了null。
初次测试最好看看控制台输出,配置好以后可以不用管。cd ~/workspace/ninjaV4 nohup dalvikvm -cp ninjaV4.dex nicelee.server.MainServer >/dev/null 2>&1 &
Tasker
- 周期性触发WiFi状态上传
- Tasker添加任务
- 弹出对话框,选择插件
- 弹出对话框,选择termux:task
- 弹出对话框,选择脚本wifi_status_upload.sh
- 建议每30分钟触发一次
- 周期性触发云端命令获取并执行
- Tasker添加任务
- 弹出对话框,选择插件
- 弹出对话框,选择termux:task
- 弹出对话框,选择脚本get_command_and_run.sh
- 建议每5分钟触发一次
如何使用
同一局域网内
假设手机IP为:192.168.0.101
浏览器访问http://192.168.0.101:8888/
,可以得到如下结果:
根据提示操作即可。
例如直播录制测试状态查询:
远程操作
-
查看家内的WiFi连接状态
在Github对应的Repo路径查看即可
- 让家内的Android设备执行某些特定操作
- 因为是每5分钟取一次,有一定延迟。
- 编辑配置指定好的位置的文件,如
task/todo.txt
- 任务格式说明
- 任务编号: 需要严格递增,编号超过99999以后从0开始
- 计划时间: 假设
18:15
,18:20
各取一次任务,企划在18:18
,18:19
的任务都将在18:20
左右执行,且执行顺序没法确定 - 命令内容: 与局域网内各命令的网址URL一致,例如:
- 录制b站某主播: /live/start?liver=bili&id=6&qn=10000
- 录制斗鱼某主播: /live/start?liver=douyu&id=233223&qn=0
- 停止所有录制: /live/stopAll
- 更新WiFi设备连接状态: /onliner/status/upload
任务编号 计划时间 命令内容 1 2019-09-16 14:14 /test 2 2019-09-16 14:14 /cloud/history/delete 3 2019-09-17 18:18 /onliner/status/upload 4 2019-09-17 18:19 /onliner/status/upload 5 2019-09-17 18:45 /onliner/status/upload 6 2019-09-17 20:46 /onliner/status/upload