如何在不退出shell的情况下使用python脚本通过adb shell传递多个命令

时间:2018-01-22 09:53:08

标签: android python adb

我正在尝试访问Android设备的adb shell并传递多个命令,例如

CREATE DEFINER=`root`@`localhost` FUNCTION `stripFirstNumber`(in_str varchar(100)) RETURNS varchar(100) CHARSET latin1
BEGIN

declare first_char varchar(1);
declare len integer;
declare ret_val varchar(100);

set len = length(in_str);
if len > 0 then
    set first_char = substring(in_str, 1, 1);
    if find_in_set(first_char, '0,1,2,3,4,5,6,7,8,9') then
        return substring(in_str, 2, len-1);
    else
        return in_str;
    end if;
end if;

RETURN ret_val;
END

虽然我能够使用adb shell手动执行此操作,但我无法通过Python脚本执行此操作,因为脚本执行遇到“adb shell”命令后会生成新的内部shell,其余命令不会执行

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

使用文本编辑器(例如sublime或类似的东西),使用子进程编写完整的adb脚本,以发送命令并在笔记本电脑连接到手机并打开USB调试时运行它。

import subprocess

subprocess.call("adb shell <your command here>", shell = True)
subprocess.call("adb shell tap 172 3241", shell = True)   -- example

etc,只需将命令放在“ adb shell”之后并运行python脚本。这应该将所有命令键入adb shell。您甚至应该能够输入以下命令 subprocess.call("adb kill-server", shell=True)subprocess.call("adb root", shell=True)