I want access a device via adb shell commands. The device is connected via USB. Manually I can access that via the terminal with the following commands in the sequence:
cd /Users/xx/xx/# Change to path./adb shell# access the add shell- enter password # the terminal expects a input of a password
- run some more commands within the adb shell
What I have tried:
subprocess.run('cd /Users/michael/Documents/platform-tools/ ;./adb shell', shell=True)
it requires me to input the password, for that I wanted to use the input function:
subprocess.run('cd /Users/michael/Documents/platform-tools/ ;./adb shell', shell=True, input=*password*)
When I run that I get the error for the input variable: "TypeError: a bytes-like object is required, not 'str'".
For what I have understood, the 'commands' I send in step 3&4 are not real terminal commands, but inputs for the adb shell.
Can someone tell me, how I can solve that problem and automate this process in python?
CodePudding user response:
The error asks for a bytes-like object, not a string.
To turn a string literal into a bytes-like object, append b before the string. Put b in front of the string that contains the password, something like b"password".
CodePudding user response:
If I correctly understand your problem, what you only need to do is giving inputs the correct type of argument. For that just convert your string to bytes using for example str.encode('UTF-8') or you can use the bytes() method.
You can even just add a 'b' before your string like b'password'.
Here is a tutorial.
