开发手机群控系统(自动化配置篇)

开发手机群控系统(手机网络篇)

手机群控系统(补充篇)

上一周把网络问题解决了,这一周准备把自动化设置网络这一块解决掉,否则几十上百台手机的设置, 得累死

这里借助了 uiautomator2 来实现打开USB网络共享,因为后续脚本运行这一块 也是用uiautomator2 

https://github.com/openatx/uiautomator2

# 第一步 先把所有手机插上Hub,Hub插上电脑
# 命令行执行
python -m uiautomator2 init
# 所有手机安装完之后,开始编写程序
# openNet.py
# 此处写法仅供参考,不同手机位置可能不一致

# 引包
import uiautomator2 as u2
import time
import sys

if __name__ == '__main__':
    # 根据传过来的唯一标示符进行连接
    d = u2.connect(sys.argv[1])
    # 先关闭设置页面
    d.app_stop('com.android.settings')
    time.sleep(1)
    # 打开设置页面
    d.app_start('com.android.settings')
    time.sleep(1)
    # 点击网络
    d.xpath('//*[@resource-id="android:id/list"]/android.widget.RelativeLayout[4]').click()
    time.sleep(1)
    # 判断是否需要打开USB网络 如果已经开启就忽略
    print(d(resourceId='android:id/checkbox').info)
    if not d(resourceId='android:id/checkbox').info['selected']:
        time.sleep(1)
        d(resourceId='android:id/checkbox').click()

自动打开USB网络这一块已经好了,接下来写自动化网卡那一块

# initAuto.sh
#!/bin/bash
# 如果看不太懂,请参考上一篇文章

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
# 这里是获取电脑上目前所有网卡列表,后续可以做排除法 找出对应每个手机网卡
netCard=`ip a |grep 'u' | grep : | awk '{print $2}' | grep : | awk -F ":" '{print $1}'`

# 获取手机列表
deviceStr=`adb devices`

# 去除顶部的 List of devices attached
str=${deviceStr/List of devices attached/}

# 因为手机数量不是很多,我电脑ip又是80网段,为了避免麻烦,让手机网段从81开始
num=81

# 循环遍历手机列表
for i in `echo "$str" | sed 's/device/\n/g'`
do {

    # 打开手机USB网卡 传入 设备唯一码
    python openNetwork.py $i
    # 打开后停2秒 让电脑缓一下
    sleep 2
    # 获取目前的网卡列表
    netCard2=`ip a |grep 'u' | grep : | awk '{print $2}' | grep : | awk -F ":" '{print $1}'`

    # 根据最开始的网卡 筛选多出来的网卡
    str=${netCard2/$netCard/}
    # 重新赋值 以便下一轮使用
    temp=$temp2

    # 设置网卡ip
    ifconfig $str 192.168.$num.1
    echo $str 192.168.$num.1
    
    iptables -t nat -A POSTROUTING -s 192.168.$num.0/24 -o enp2s0 -jMASQUERADE
    
    # 以下操作手机
    adb -s $i shell su -c 'ip addr add 192.168.'$num'.10/24 dev rndis0'

    adb -s $i shell su -c 'ip addr del 192.168.42.129/24 dev rndis0' 

    adb -s $i shell su -c 'ip route add table local default via 192.168.'$num'.1 dev rndis0'

    adb -s $i shell su -c 'ip route add table local 192.168.'$num'.0/24 dev rndis0  proto static  scope link'

    adb -s $i shell su -c 'setprop net.dns1 114.114.114.114'

    num=$((num+=1))

} 
done

代码编写部分已完成,接下来是运行

# 获取权限
su

# 执行脚本
./initAuto.sh

 

大功告成 ,下一篇可能会写具体的群控程序吧

总体来说,难度是有一点,不过到最后还好克服了,顺利交货~~

 

 

你可能感兴趣的:(Python)