Wie zu öffnen adb-shell und führen Sie Befehle in der shell mit python
Ich versuche ausführen adb shell-Befehle in python mit subprocess.Popen
Beispiel: Müssen Sie ausführen 'Befehl' in der adb-shell. Während der Ausführung manuell, ich öffnen Sie das Befehlsfenster und führen Sie, wie unten, und es funktioniert.
>adb shell
#<command>
In Python verwende ich, wie unten, aber der Prozess hängen geblieben ist und nicht den Ausgang
subprocess.Popen('adb shell <command>)
Versucht Ausführung manuell in das Kommando-Fenster, das gleiche Ergebnis, wie python-code,geklebt und nicht geben Ausgabe
>adb shell <command>
Ich versuche zum ausführen einer Binär-Datei im hintergrund(mit binären Dateiname, gefolgt von &) in der Befehlszeile ein.
InformationsquelleAutor Ankur | 2016-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg gefunden, es zu tun mit Kommunikation () - Methode im subprocess-Modul
cmd = ['adb', 'shell']
procId = subprocess.Popen(cmd, stdin=subprocess.PIPE)
Und ich muss darauf hinweisen, dassprocId.communicate('command1\ncommand2\nexit\n')
funktioniert nicht in Python ist3, weil diese Ausnahme wird geworfen:TypeError: a bytes-like object is required, not 'str'
. Verwenden Sie diesen Befehl statt:procId.communicate(b'command1\ncommand2\nexit\n')
(mit einem "b" davor), weil es funktioniert sowohl in Python2 und Python ist3.InformationsquelleAutor Ankur
verwenden pexpect (https://pexpect.readthedocs.io/en/stable/)
easy_install pexpect
um dieses Paket zu installierenIch bin mit python2.7. Die Installation über pip installieren pexpect. aber es scheint spawn Modul ist nicht vorhanden.
in der Befehl Linie Modus
import pexpect;help(pexpect)
um zu sehen, was pexpect genau, die du installierenseine version 4.2.0
InformationsquelleAutor kaitian521
Ankur Kabra, versuchen Sie den folgenden code:
und sehen Sie die Ausgabe des Fehlers.
In der Regel wird es Ihnen sagen:
was bedeutet, Hülle kann nicht excute
adb
Befehl.so, das hinzufügen
adb
zu IhremPATH
oder schreiben Sie den vollständigen Pfad deradb
wird das problem lösen.Kann helfen.
Hallo, wenn Sie möchten, öffnen Sie die adb-shell mit python und dann wieder Befehle in das shell mit python, verwenden Sie
subprocess.Popen('adb shell shell_command')
. Sie nicht haben, um eine lange Verbindung, schließen Sie einfach an die shell jedes mal, wenn Sie ausführen eines shell-Kommandos.ja, es funktioniert grundsätzlich, aber es scheint einige Problem mit meinem Befehl. Wenn ich es in einer einzigen Zeile, dann gibt es keine Ausgabe.
Ist es ok für dich veröffentlichen Sie Ihren code?
Teilprozess.Popen('adb shell setenforce 0')---->funktioniert Teilprozess.Popen('adb shell, webserver, &')----->Programm stecken zu diesem Schritt. hier webserver abinary Datei
InformationsquelleAutor shitoujizu