3 votes

Installer Python pour exécuter speedtest-cli sur un téléphone Android sans accès à l'appareil - via adb

Je veux installer python sur un téléphone Android (le téléphone est connecté à un pi donc je n'ai pas d'interface graphique ou d'accès physique à l'appareil). Je peux me connecter au téléphone via adb shell et exécuter/installer des paquets via des fichiers apk facilement. Je souhaite installer python sur l'appareil afin de pouvoir exécuter speedtest-cli à distance via adb shell. https://github.com/sivel/speedtest-cli Speedtest-cli nécessite python. Jusqu'à présent, j'ai essayé ce qui suit en me basant sur des articles en ligne. 1. Installation de l'application termux via APK. Je peux accéder aux fichiers sous-jacents à distance. J'ai essayé d'installer python en utilisant la commande pkg mais je n'ai pas pu obtenir l'erreur suivante.

1|:/data/data/com.termux/files/usr/bin # ./pkg install python                                                                                                                                               
This must NOT be run as root as it will break your environment (root will be required for nearly everything due to changed file permissions)
1|marlin:/data/data/com.termux/files/usr/bin # whoami
root

2. J'ai installé Qpython sur l'appareil en utilisant adb. Cependant, lorsque je lance la commande adb pour lancer Qpython, je vois une invite sur l'appareil - Autoriser Qpython à accéder aux options média - Accepter ou Refuser. Comme je n'ai pas accès à l'appareil, je peux sélectionner l'une ou l'autre des options. Existe-t-il un moyen d'envoyer une commande via ADB pour sélectionner - Accept ?

J'apprécierais également toute autre idée. Mon objectif final est d'exécuter l'utilitaire speetest-cli via le shell adb sur un appareil qui n'est pas physiquement accessible.

2voto

rfguy Points 41

Le problème a fini par être résolu. Voici ce que j'ai fait -

  1. Installation de termux par téléchargement de l'apk et exécution adb install com.termux.apk

  2. Lancement à distance de l'application termux via adb (monkey) (ceci est nécessaire pour terminer l'installation sur l'appareil) monkey -p com.termux -c android.intent.category.LAUNCHER

  3. une fois termux installé, j'ai installé python et speedtest-cli sur l'appareil en utilisant adb input text et keyevents -

    • adb input text "pkg install python"

    • adb input keyevent "66"

    • adb input text "pip install speedtest-cli"

  4. Naviguez ensuite vers /data/data/com.termux/files/usr/bin Vous devriez y trouver le script speedtest-cli que vous pouvez invoquer depuis le shell adb

    /data/data/com.termux/files/usr/bin # ./speedtest-cli
    Récupération de la configuration de speedtest.net... Test à partir de XXXXX Test du téléchargement de la vitesse................................................................................ Télécharger : 20,18 Mbit/s Test de la vitesse de téléchargement vers l'amont...................................................................................................... Upload : 3,98 Mbit/s

1voto

madx Points 101

J'ai essentiellement suivi la solution donnée par rfguy .
Mais j'ai eu cette erreur :

n'a pas pu trouver de version satisfaisant à l'exigence speedtest-cli (à partir de versions : aucune)
pip est configuré avec des emplacements qui nécessitent tls/ssl

enter image description here

J'ai résolu le problème en installant openssl aussi sur Termux, comme suit :

# uninstall Termux
adb uninstall com.termux
sleep 2

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

# open the app
adb shell monkey --pct-syskeys 0 -p com.termux 1
sleep 8

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

# enter
adb shell input keyevent 66
sleep 15

# yes
adb shell input text 'Y'
sleep 2

# enter
adb shell input keyevent 66
sleep 60

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

# enter
adb shell input keyevent 66
sleep 10

# yes
adb shell input text 'Y'
sleep 2

# enter
adb shell input keyevent 66
sleep 15

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

# enter
adb shell input keyevent 66
sleep 30

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

# hide termux
adb shell pm hide com.termux

Vous pouvez exécuter ce script à l'aide d'un sh .\this_script.sh si vous êtes déjà connecté à l'appareil à l'aide d'un adb connect your_device_ip

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X