OLD | NEW |
1 # Copyright 2016 Google Inc. | 1 # Copyright 2016 Google Inc. |
2 # | 2 # |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import re | 6 import re |
7 import subprocess | 7 import subprocess |
| 8 import sys |
8 | 9 |
9 class Adb: | 10 class Adb: |
10 def __init__(self, device_serial=None): | 11 def __init__(self, device_serial=None): |
11 self.__invocation = ['adb'] | 12 self.__invocation = ['adb'] |
12 if device_serial: | 13 if device_serial: |
13 self.__invocation.extend(['-s', device_serial]) | 14 self.__invocation.extend(['-s', device_serial]) |
14 | 15 |
15 def shell(self, cmd): | 16 def shell(self, cmd): |
16 subprocess.call(self.__invocation + ['shell', cmd]) | 17 subprocess.call(self.__invocation + ['shell', cmd], stdout=sys.stderr) |
17 | 18 |
18 def check(self, cmd): | 19 def check(self, cmd): |
19 result = subprocess.check_output(self.__invocation + ['shell', cmd]) | 20 result = subprocess.check_output(self.__invocation + ['shell', cmd]) |
20 return result.rstrip() | 21 return result.rstrip() |
21 | 22 |
22 def check_lines(self, cmd): | 23 def check_lines(self, cmd): |
23 result = self.check(cmd) | 24 result = self.check(cmd) |
24 return re.split('[\r\n]+', result) | 25 return re.split('[\r\n]+', result) |
25 | 26 |
26 def get_device_model(self): | 27 def get_device_model(self): |
27 result = self.check('getprop | grep ro.product.model') | 28 result = self.check('getprop | grep ro.product.model') |
28 result = re.match(r'\[ro.product.model\]:\s*\[(.*)\]', result) | 29 result = re.match(r'\[ro.product.model\]:\s*\[(.*)\]', result) |
29 return result.group(1) if result else 'unknown_product' | 30 return result.group(1) if result else 'unknown_product' |
30 | 31 |
31 def is_root(self): | 32 def is_root(self): |
32 return self.check('echo $USER') == 'root' | 33 return self.check('whoami') == 'root' |
33 | 34 |
34 def attempt_root(self): | 35 def attempt_root(self): |
35 if self.is_root(): | 36 if self.is_root(): |
36 return True | 37 return True |
37 subprocess.call(self.__invocation + ['root']) | 38 subprocess.call(self.__invocation + ['root'], stdout=sys.stderr) |
38 return self.is_root() | 39 return self.is_root() |
39 | 40 |
40 def remount(self): | 41 def remount(self): |
41 subprocess.call(self.__invocation + ['remount']) | 42 subprocess.call(self.__invocation + ['remount'], stdout=sys.stderr) |
OLD | NEW |