3 votos

Instala Python para ejecutar speedtest-cli en un teléfono Android sin acceso al dispositivo - a través de adb

Quiero instalar Python en un teléfono Android (el teléfono está conectado a una Raspberry Pi por lo que no tengo ninguna interfaz gráfica o acceso físico al dispositivo). Puedo conectarme al teléfono a través de adb shell y ejecutar / instalar paquetes a través de archivos APK fácilmente. Quiero instalar Python en el dispositivo para ejecutar speedtest-cli de forma remota a través de adb shell. https://github.com/sivel/speedtest-cli

speedtest-cli requiere Python. Hasta ahora he intentado lo siguiente basado en artículos en línea.

  1. Instalé la aplicación Termux a través de APK. Puedo acceder a los archivos subyacentes de forma remota. Intenté instalar Python usando el comando pkg pero no pude. Error a continuación.

    1|:/data/data/com.termux/files/usr/bin # ./pkg install python                                                                                                                                               
    Esto NO debe ejecutarse como root ya que romperá su entorno (será necesario el root para casi todo debido a los permisos de archivo modificados)
    1|marlin:/data/data/com.termux/files/usr/bin # whoami
    root
  2. Instalé Qpython en el dispositivo usando adb. Sin embargo, el problema es que cuando lanzo el comando adb para iniciar Qpython, veo un mensaje en el dispositivo - "Permitir que Qpython acceda a media Opciones - Aceptar o Denegar". Dado que no tengo acceso al dispositivo, no puedo seleccionar ninguna de las opciones. ¿Hay alguna manera de enviar un comando a través de ADB para seleccionar - Aceptar?

Agradecería cualquier otra idea también. Mi objetivo final es ejecutar la utilidad speedtest-cli a través de adb shell en un dispositivo al que no tengo acceso físico.

2voto

rfguy Puntos 1

Finalmente resolví esto. Esto es lo que hice -

  1. Instalé Termux descargando el APK y realizando adb install com.termux.apk

  2. Inicié de forma remota la aplicación Termux mediante ADB (monkey) (esto es necesario para completar la instalación en el dispositivo) monkey -p com.termux -c android.intent.category.LAUNCHER

  3. Una vez instalado Termux, instalé python y speedtest-cli en el dispositivo usando adb input text y keyevents -

    adb input text "pkg install python"
    adb input keyevent "66"
    adb input text "pip install speedtest-cli"
  4. Luego navegar a /data/data/com.termux/files/usr/bin. Aquí deberías tener el script speedtest-cli que puedes invocar desde adb shell

    /data/data/com.termux/files/usr/bin # ./speedtest-cli                                                                                                                                                      
    Retrieving speedtest.net configuration...
    Testing from XXXXX
    Testing download speed................................................................................
    Download: 20.18 Mbit/s
    Testing upload speed......................................................................................................
    Upload: 3.98 Mbit/s

0 votos

Tuve que agregar un parámetro COUNT al comando monkey, es decir, monkey -p com.termux -c android.intent.category.LAUNCHER 1

0 votos

Y también puedes hacer am start -n com.termux/.HomeActivity para abrir Termux (aunque es posible que tengas que cerrar el teclado virtual, por ejemplo, input keyevent 4)

1voto

Zan Puntos 61

Básicamente seguí la solución dada por rfguy.
Pero tuve este error:

no se pudo encontrar una versión que satisficiera el requisito speedtest-cli (de las versiones: none)
pip está configurado con ubicaciones que requieren tls/ssl

enter image description here

Lo resolví instalando openssl también en Termux, de la siguiente manera:

# desinstalar Termux
adb uninstall com.termux
sleep 2

# instalar el apk
adb install -r ~/Desktop/Termux.apk
sleep 2

# abrir la aplicación
adb shell monkey --pct-syskeys 0 -p com.termux 1
sleep 8

# instalar python
adb shell input text 'pkg%sinstall%spython'
sleep 2

# enter
adb shell input keyevent 66
sleep 15

# sí
adb shell input text 'Y'
sleep 2

# enter
adb shell input keyevent 66
sleep 60

# instalar openssl
adb shell input text 'pkg%sinstall%sopenssl'
sleep 2

# enter
adb shell input keyevent 66
sleep 10

# sí
adb shell input text 'Y'
sleep 2

# enter
adb shell input keyevent 66
sleep 15

# instalar speedtest-cli
adb shell input text 'pip%sinstall%sspeedtest-cli'
sleep 2

# enter
adb shell input keyevent 66
sleep 30

# ejecutar speedtest-cli
adb shell /data/data/com.termux/files/usr/bin/speedtest-cli

# ocultar termux
adb shell pm hide com.termux

Puedes ejecutar este script con un sh .\this_script.sh si ya estás conectado al dispositivo con un adb connect your_device_ip

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X