从python脚本在cmd提示符中执行adb命令

时间:2017-02-09 07:35:41

标签: python-2.7 adb

我正在尝试从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很陌生。

感谢你们的帮助!!

干杯

2 个答案:

答案 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-adbadb 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')