同步操作将从 King/ATX 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Manage batch of atx-agents
重要:需要有go语言的基础,知道该如何编译一个go的程序
Compile with go
$ go get -v github.com/openatx/atx-server
$ cd $GOPATH/src/github.com/openatx/atx-server
$ go build
launch rethinkdb
$ rethinkdb
Running rethinkdb 2.3.6 (CLANG 8.1.0 (clang-802.0.42))...
Running on Darwin 16.6.0 x86_64
...
launch atx-server
./atx-server --port 8000
Install atx-agent
using uiautomator2 into android phone. your android phone and server running atx-server
should in the same intranet.
Suppose server running atx-server
got the ip 10.0.1.1
, listen port 8000
. Do the following command
$ pip install -U --pre uiautomator2
$ python -m uiautomator2 init 10.0.1.1:8000
open browser http://localhost:8000, you should see the device listed on the web.
Usage command flag
./atx-server --ding-token 13gb4db7c276d22e84f788fa693b729d53218b8e07d6ede43de79360c962 --port 8080
Set up env var
export DING_TOKEN="13gb4db7c276d22e84f788fa693b729d53218b8e07d6ede43de79360c962"
./atx-server --port 8080
其中udid是通过hwaddr, model, serial组合生成的
$ curl $SERVER_URL/list
[
{
"udid": "741AEDR42P6YM-2c:57:31:4b:40:74-M2_E",
"ip": "10.240.218.20",
"present": true,
"ready": true,
"using": true,
"provider": null,
"serial": "741AEDR42P6YM",
"brand": "Meizu",
"model": "M2 E",
"hwaddr": "2c:57:31:4b:40:74",
"agentVersion": "0.1.1",
"battery": {},
"display": {
"width": 1080,
"height": 1920
}
}
]
There are some fields you need pay attention.
present
means device is onlineready
is the thumb you can see and edit in the webusing
means if device is using by someoneprovider
is a special field, if device is plugged into some machine which running u2init, the bellow info can be found in device info.
"provider": {
"id": "33576428",
"ip": "10.0.0.1",
"port": 10000,
"present": true # provider online of not
}
if provider
is null
it means device is not plugged-in.
$ curl $SERVER_URL/devices/ip:10.0.0.1/info
# or
$ curl $SERVER_URL/devices/$UDID/info
返回值同/list的的单个结果,这里就不写了。
atx-agent
通过检测该接口确定是否升级
$ curl /version
{
"server": "dev",
"atx-agent": "0.0.7"
}
$ curl -X POST -F command="pwd" $SERVER_URL/devices/{query}/shell
{
"output": "/"
}
占用、释放
状态码 成功200,失败403
$ curl -X POST $SERVER_URL/devices/{query}/reserved
Success
状态码 成功200,失败403
$ curl -X DELETE $SERVER_URL/devices/{query}/reserved
Release success
随机占用一台设备
$ curl -X POST $SERVER_URL/devices/:random/reserved
Success
Provider send POST to Server heartbeat info to let server known provider is online. It is also need to send the same data to Server in 15s or the Provider will be marked offline.
$ curl -X POST -F id=$PROVIDER_ID -F port=11000 $SERVER_URL/provider/heartbeat
You may need to add ip field if provider and server is not in the same network
$ PROVIDER_IP=10.0.0.1 # change to your provider ip
$ PROVIDER_ID=ccdd11ff # change to your provider id
$ curl -X POST \
-F ip=$PROVIDER_IP \
-F id=$PROVIDER_ID \
-F port=11000 \
$SERVER_URL/provider/heartbeat
Server response status 200 indicate success, or 400 and else means failure
Send using bellow command when there is device plugged-in
$ DEVICE_UDID="3578298f-b4:0b:44:e6:1f:90-OD103" # change to your device udid
$ DATA="{\"status\": \"online\", \"udid\": \"$DEVICE_UDID\"}"
$ curl -X POST \
-F id=$PROVIDER_ID \
-F port=11000 \
-F data="$DATA" $SERVER_URL/provider/heartbeat
It is complicated. Hard to write.
atx-server
is dockerized (based on golang
image) and depends on the official rethinkdb
container. To build and run all services, use:
docker-compuse up --build
atx-server
can be accessed from localhost:8000
and rethinkdb
web console is available at localhost:8001
, both specified in the compose file.
rethinkdb
data is stored at $PWD/data
(host volume).
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。