diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-15 03:23:48 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-15 03:23:48 +0000 |
commit | 3b46527da85b8139d5fcf887387bcd4de20dec41 (patch) | |
tree | 35fa0fbaeaaddd9cc2a126a05eee3527b51e83a8 /deprecated/cros_login.py | |
parent | 62564f20dc6f3a88caed664d54fc00dbf3bf7373 (diff) | |
parent | b75f321fc8978b92ce3db6886ccb966768f0c7a8 (diff) | |
download | toolchain-utils-android11-d1-s1-release.tar.gz |
Snap for 6210127 from b75f321fc8978b92ce3db6886ccb966768f0c7a8 to rvc-d1-releaseandroid-11.0.0_r9android-11.0.0_r8android-11.0.0_r7android-11.0.0_r15android-11.0.0_r14android-11.0.0_r13android-11.0.0_r12android-11.0.0_r11android-11.0.0_r10android11-d1-s7-releaseandroid11-d1-s6-releaseandroid11-d1-s5-releaseandroid11-d1-s1-releaseandroid11-d1-release
Change-Id: I508eae962f523cfa857b4da7c77fdb8a70dfab1e
Diffstat (limited to 'deprecated/cros_login.py')
-rwxr-xr-x | deprecated/cros_login.py | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/deprecated/cros_login.py b/deprecated/cros_login.py new file mode 100755 index 00000000..06ff8ff0 --- /dev/null +++ b/deprecated/cros_login.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python2 +# +# Copyright 2010~2015 Google Inc. All Rights Reserved. +"""Script to get past the login screen of ChromeOS.""" + +from __future__ import print_function + +import argparse +import os +import sys +import tempfile + +from cros_utils import command_executer + +LOGIN_PROMPT_VISIBLE_MAGIC_FILE = '/tmp/uptime-login-prompt-visible' +LOGGED_IN_MAGIC_FILE = '/var/run/state/logged-in' + +script_header = """ +import os +import autox +import time +""" + +wait_for_login_screen = """ + +while True: + print 'Waiting for login screen to appear...' + if os.path.isfile('%s'): + break + time.sleep(1) + print 'Done' + +time.sleep(20) +""" % LOGIN_PROMPT_VISIBLE_MAGIC_FILE + +do_login = """ +xauth_filename = '/home/chronos/.Xauthority' +os.environ.setdefault('XAUTHORITY', xauth_filename) +os.environ.setdefault('DISPLAY', ':0.0') + +print 'Now sending the hotkeys for logging in.' +ax = autox.AutoX() +# navigate to login screen +ax.send_hotkey('Ctrl+Shift+q') +ax.send_hotkey('Ctrl+Alt+l') +# escape out of any login screen menus (e.g., the network select menu) +time.sleep(2) +ax.send_hotkey('Escape') +time.sleep(2) +ax.send_hotkey('Tab') +time.sleep(0.5) +ax.send_hotkey('Tab') +time.sleep(0.5) +ax.send_hotkey('Tab') +time.sleep(0.5) +ax.send_hotkey('Tab') +time.sleep(0.5) +ax.send_hotkey('Return') +print 'Waiting for Chrome to appear...' +while True: + if os.path.isfile('%s'): + break + time.sleep(1) +print 'Done' +""" % LOGGED_IN_MAGIC_FILE + + +def RestartUI(remote, chromeos_root, login=True): + chromeos_root = os.path.expanduser(chromeos_root) + ce = command_executer.GetCommandExecuter() + # First, restart ui. + command = 'rm -rf %s && restart ui' % LOGIN_PROMPT_VISIBLE_MAGIC_FILE + ce.CrosRunCommand(command, machine=remote, chromeos_root=chromeos_root) + host_login_script = tempfile.mktemp() + device_login_script = '/tmp/login.py' + login_script_list = [script_header, wait_for_login_screen] + if login: + login_script_list.append(do_login) + + full_login_script_contents = '\n'.join(login_script_list) + + with open(host_login_script, 'w') as f: + f.write(full_login_script_contents) + ce.CopyFiles( + host_login_script, + device_login_script, + dest_machine=remote, + chromeos_root=chromeos_root, + recursive=False, + dest_cros=True) + ret = ce.CrosRunCommand( + 'python %s' % device_login_script, + chromeos_root=chromeos_root, + machine=remote) + if os.path.exists(host_login_script): + os.remove(host_login_script) + return ret + + +def Main(argv): + """The main function.""" + parser = argparse.ArgumentParser() + parser.add_argument( + '-r', '--remote', dest='remote', help='The remote ChromeOS box.') + parser.add_argument( + '-c', '--chromeos_root', dest='chromeos_root', help='The ChromeOS root.') + + options = parser.parse_args(argv) + + return RestartUI(options.remote, options.chromeos_root) + + +if __name__ == '__main__': + retval = Main(sys.argv[1:]) + sys.exit(retval) |