stf设备管理平台-如何进行远程连接?

1.官方文档获取shell脚本

 

1)检测是否有设备,如果没有就退出;检测是否有stf平台链接,如果没有就退出;

2) add_device就是设备的授权操作

3) remote_connect把已经授权的设备拉到本地,进行使用,本质就是adb connect操作

就是把远程设备拉到本地
4)remove_device取消授权
5) set -euxo pipefail 去掉e,因为加e的话如果返回错误就会关掉终端, -x就是把代码执行的详细信息打印出来

在此基础上我们可以增加一些自己的方法,可以对脚本进行改造:

exit 1要换成return 1,exit1 执行错误会将终端都给关了

:% s/exit 1/return 1/g

添加获取设备名称的方法:

添加token、stfurl、device_serial如下:

修改后脚本如下

#!/usr/bin/env bash

set -euxo pipefail
STF_TOKEN="5dbab0d78eaf424d810f0e624a360925bb9b35103f284b1c994c0ea758b14"
STF_URL=http://localhost:7100
DEVICE_SERIAL=emulator-5554
if [ "$DEVICE_SERIAL" == "" ]; then
    echo "Please specify device serial using ENV['DEVICE_SERIAL']"
    return 1
fi

if [ "$STF_URL" == "" ]; then
    echo "Please specify stf url using ENV['STF_URL']"
    return 1
fi

if [ "$STF_TOKEN" == "" ]; then
    echo "Please specify stf token using using ENV['STF_TOKEN']"
    return 1
fi
function get_device
{   
    curl -H "Authorization: Bearer $STF_TOKEN" $STF_URL/api/v1/devices |jq -c '.devices[]|[.serial,.present,.remoteConnectUrl]'|grep true|awk -F \" '{print $2}'
}
function add_device
{
    response=$(curl -X POST -H "Content-Type: application/json" \
                 -H "Authorization: Bearer $STF_TOKEN" \
                 --data "{\"serial\": \"$DEVICE_SERIAL\"}" $STF_URL/api/v1/user/devices)

    success=$(echo "$response" | jq .success | tr -d '"')
    description=$(echo "$response" | jq .description | tr -d '"')

    if [ "$success" != "true" ]; then
        echo "Failed because $description"
        return 1
    fi    
         
    echo "Device $DEVICE_SERIAL added successfully"
}        
        
function remote_connect
{            
    response=$(curl -X POST \
                 -H "Authorization: Bearer $STF_TOKEN" \
                $STF_URL/api/v1/user/devices/$DEVICE_SERIAL/remoteConnect)
    
    success=$(echo "$response" | jq .success | tr -d '"')
    description=$(echo "$response" | jq .description | tr -d '"')
    
    if [ "$success" != "true" ]; then
        echo "Failed because $description"
        return 1
    fi
    remote_connect_url=$(echo "$response" | jq .remoteConnectUrl | tr -d '"')
    adb connect $remote_connect_url

    echo "Device $DEVICE_SERIAL remote connected successfully"
}

function remove_device
{
    response=$(curl -X DELETE \
                 -H "Authorization: Bearer $STF_TOKEN" \
                $STF_URL/api/v1/user/devices/$DEVICE_SERIAL)

    success=$(echo "$response" | jq .success | tr -d '"')
    description=$(echo "$response" | jq .description | tr -d '"')

    if [ "$success" != "true" ]; then
        echo "Failed because $description"
        return 1
    fi

    echo "Device $DEVICE_SERIAL removed successfully"
} 

最后运行脚本,获取设备名称

 
我们还可以对脚本进行优化,执行adb monkey命令
function get_device
{
  curl -H "Authorization: Bearer $STF_TOKEN" $STF_URL/api/v1/devices  | jq -c '.devices[]|[.serial,.present,.remoteConnectUrl]'
}
function get_remote_device
{
  get_device | grep true | awk -F \" {'print $4'}
}

function run
{
  get_remote_device|while read line; do { nohup adb -s $line shell monkey 1000 &};done
}

 首先要执行. stf.sh 然后执行get_device,查看设备是否授权,若没有则执行add_device,连接设备remote_connect,最后run就可以执行monkey命令了

查看设备会发现多了一个localhost名称的设备,代表远程连接成功

posted @ 2020-05-04 15:45  zhaikunkun  阅读(686)  评论(0)    收藏  举报