我正在尝试从python脚本以自动方式执行adb命令。请注意我在Windows中使用python 2.7。 如果我手动执行,序列如下:
C:\Project\python>adb shell
login:<enter login id e.g. root>
Password: <enter password e.g. test>
Last login: Thu Feb 9 12:29:46 UTC 2017 on pts/0
~ # date
date
Thu Feb 9 12:55:06 UTC 2017
我正在尝试从python脚本处理此序列。我尝试过使用subprocess.call(&#34; adb shell date&#34;)但它没有说没有登录就无法执行命令。我不知道如何传递登录ID和密码。对于noob问题很抱歉,因为我对Python很陌生。
感谢你们的帮助!!
干杯
答案 0 :(得分:1)
尝试subprocess.Popen
:
import subprocess
cmd_input = """<enter login id e.g. root>
<enter password e.g. test>
date"""
process = subprocess.Popen(
"adb shell",
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE
)
process.communicate()
for i in cmd_input.split("\n"):
process.communicate(i + "\n")
或者:
process = subprocess.Popen(
"adb shell",
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE
)
process.communicate(user + "\n")
process.communicate(pwd + "\n")
process.communicate(cmd + "\n")
另一种选择是使用google/python-adb或adb via pip
答案 1 :(得分:0)
我遇到process.communicate('command_to_send\n')
的错误消息
TypeError: a bytes-like object is required, not 'str'
通过以下方式使用子流程通讯命令可解决TypeError:
process.communicate(b'input keyevent KEYCODE_CALL\n')