| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 """A wrapper around ssh for common operations on a CrOS-based device""" | 4 """A wrapper around ssh for common operations on a CrOS-based device""" |
| 5 import logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import re | 7 import re |
| 8 import shutil | 8 import shutil |
| 9 import subprocess | 9 import subprocess |
| 10 import sys | 10 import sys |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 | 189 |
| 190 stdout, stderr = self.RunCmdOnDevice([ | 190 stdout, stderr = self.RunCmdOnDevice([ |
| 191 'if', 'test', '-e', file_name, ';', | 191 'if', 'test', '-e', file_name, ';', |
| 192 'then', 'echo', '1', ';', | 192 'then', 'echo', '1', ';', |
| 193 'fi' | 193 'fi' |
| 194 ], quiet=True) | 194 ], quiet=True) |
| 195 if stderr != '': | 195 if stderr != '': |
| 196 if "Connection timed out" in stderr: | 196 if "Connection timed out" in stderr: |
| 197 raise OSError('Machine wasn\'t responding to ssh: %s' % | 197 raise OSError('Machine wasn\'t responding to ssh: %s' % |
| 198 stderr) | 198 stderr) |
| 199 raise OSError('Unepected error: %s' % stderr) | 199 raise OSError('Unexpected error: %s' % stderr) |
| 200 exists = stdout == '1\n' | 200 exists = stdout == '1\n' |
| 201 logging.debug("FileExistsOnDevice(<text>, %s)->%s" % (file_name, exists)) | 201 logging.debug("FileExistsOnDevice(<text>, %s)->%s" % (file_name, exists)) |
| 202 return exists | 202 return exists |
| 203 | 203 |
| 204 def PushFile(self, filename, remote_filename): | 204 def PushFile(self, filename, remote_filename): |
| 205 if self.local: | 205 if self.local: |
| 206 args = ['cp', '-r', filename, remote_filename] | 206 args = ['cp', '-r', filename, remote_filename] |
| 207 stdout, stderr = GetAllCmdOutput(args, quiet=True) | 207 stdout, stderr = GetAllCmdOutput(args, quiet=True) |
| 208 if stderr != '': | 208 if stderr != '': |
| 209 raise OSError('No such file or directory %s' % stderr) | 209 raise OSError('No such file or directory %s' % stderr) |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 df_ary = df_out.split('\n') | 394 df_ary = df_out.split('\n') |
| 395 # 3 lines for title, mount info, and empty line. | 395 # 3 lines for title, mount info, and empty line. |
| 396 if len(df_ary) == 3: | 396 if len(df_ary) == 3: |
| 397 line_ary = df_ary[1].split() | 397 line_ary = df_ary[1].split() |
| 398 if line_ary: | 398 if line_ary: |
| 399 return line_ary[0] | 399 return line_ary[0] |
| 400 return None | 400 return None |
| 401 | 401 |
| 402 def CryptohomePath(self, user): | 402 def CryptohomePath(self, user): |
| 403 """Returns the cryptohome mount point for |user|.""" | 403 """Returns the cryptohome mount point for |user|.""" |
| 404 return self.RunCmdOnDevice( | 404 stdout, stderr = self.RunCmdOnDevice( |
| 405 ['cryptohome-path', 'user', "'%s'" % user])[0].strip() | 405 ['cryptohome-path', 'user', "'%s'" % user]) |
| 406 if stderr != '': |
| 407 raise OSError('cryptohome-path failed: %s' % stderr) |
| 408 return stdout.rstrip() |
| 406 | 409 |
| 407 def IsCryptohomeMounted(self, username, is_guest): | 410 def IsCryptohomeMounted(self, username, is_guest): |
| 408 """Returns True iff |user|'s cryptohome is mounted.""" | 411 """Returns True iff |user|'s cryptohome is mounted.""" |
| 409 profile_path = self.CryptohomePath(username) | 412 profile_path = self.CryptohomePath(username) |
| 410 mount = self.FilesystemMountedAt(profile_path) | 413 mount = self.FilesystemMountedAt(profile_path) |
| 411 mount_prefix = 'guestfs' if is_guest else '/home/.shadow/' | 414 mount_prefix = 'guestfs' if is_guest else '/home/.shadow/' |
| 412 return mount and mount.startswith(mount_prefix) | 415 return mount and mount.startswith(mount_prefix) |
| 413 | 416 |
| 414 def TakeScreenShot(self, screenshot_prefix): | 417 def TakeScreenShot(self, screenshot_prefix): |
| 415 """Takes a screenshot, useful for debugging failures.""" | 418 """Takes a screenshot, useful for debugging failures.""" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 436 logging.info('(Re)starting the ui (logs the user out)') | 439 logging.info('(Re)starting the ui (logs the user out)') |
| 437 if clear_enterprise_policy: | 440 if clear_enterprise_policy: |
| 438 self.RunCmdOnDevice(['stop', 'ui']) | 441 self.RunCmdOnDevice(['stop', 'ui']) |
| 439 self.RmRF('/var/lib/whitelist/*') | 442 self.RmRF('/var/lib/whitelist/*') |
| 440 self.RmRF('/home/chronos/Local\ State') | 443 self.RmRF('/home/chronos/Local\ State') |
| 441 | 444 |
| 442 if self.IsServiceRunning('ui'): | 445 if self.IsServiceRunning('ui'): |
| 443 self.RunCmdOnDevice(['restart', 'ui']) | 446 self.RunCmdOnDevice(['restart', 'ui']) |
| 444 else: | 447 else: |
| 445 self.RunCmdOnDevice(['start', 'ui']) | 448 self.RunCmdOnDevice(['start', 'ui']) |
| OLD | NEW |