| #!/bin/bash |
| # Copyright 2016 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # The purpose of this script is to help user setup SSH/ADB connection to |
| # the Android apps on their Chromebook. It performs the following steps: |
| # 1. Download SSH RSA key for devmode Chromebook. |
| # 2. Add an entry in .ssh/config, then ssh to the Chromebook via RSA key. |
| # 3. Copy local ADB key to Chromebook so that ADB would accept request from |
| # this workstation. |
| |
| # Configurable constants |
| KEY_URL="https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/3b1b89803279f3f21b6b95b88cdaae22efe56c63/chromeos-base/chromeos-test-testauthkeys/files/testing_rsa?format=TEXT" |
| |
| # Environment checks |
| if [ $# -ne 2 ]; then |
| echo "Usage: $0 <ip address> <chromebook host name>" |
| exit 1 |
| fi |
| |
| IP=$1 |
| CHROMEBOOK=$2 |
| |
| if ! ping -c1 -W1 ${IP} &> /dev/null; then |
| echo "ERROR: ${IP} is not reachable" |
| exit 1 |
| fi |
| |
| # Download SSH key file |
| mkdir --mode=700 -p ~/.ssh |
| TESTING_RSA=$(readlink -f ~/.ssh/chromebook_testing_rsa) |
| if [ ! -f ${TESTING_RSA} ]; then |
| curl -s ${KEY_URL} | base64 --decode > ${TESTING_RSA} |
| chmod 600 ${TESTING_RSA} |
| fi |
| |
| # Check if the SSH config already had the host |
| SSH_CONFIG=$(readlink -f ~/.ssh/config) |
| if [[ -z "$(grep "Host ${CHROMEBOOK}" ${SSH_CONFIG} 2> /dev/null)" ]]; then |
| # Alter .ssh/config |
| cat << EOF >> ${SSH_CONFIG} |
| |
| Host ${CHROMEBOOK} |
| Hostname ${IP} |
| User root |
| IdentityFile ${TESTING_RSA} |
| UserKnownHostsFile /dev/null |
| StrictHostKeyChecking no |
| LogLevel ERROR |
| EOF |
| fi |
| |
| # Connect to Chromebook |
| function ssh_exec() { |
| ssh ${CHROMEBOOK} $1 || (echo "ERROR: failed to execute command: $1" && exit 1) |
| } |
| |
| ssh_exec "exit" |
| echo "INFO: SSH connectivity established." |
| |
| # Copy ADB key |
| adb kill-server &> /dev/null |
| adb start-server &> /dev/null |
| ADB_KEY=$(readlink -f ~/.android/adbkey.pub) |
| if [ -z ${ADB_KEY} ]; then |
| echo "ERROR: cannot locate ADB public key." |
| exit 1 |
| fi |
| |
| ssh_exec "android-sh -c 'cat > /data/misc/adb/adb_keys'" < ${ADB_KEY} |
| ssh_exec "android-sh -c 'restorecon /data/misc/adb/adb_keys'" |
| ssh_exec "android-sh -c 'setprop persist.sys.usb.config mtp,adb'" |
| |
| echo "INFO: ADB set up complete." |