| #!/bin/bash | |
| # Copyright 2017 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| #### CATEGORY=Device management | |
| ### start a remote interactive shell in the target device | |
| ## usage: fx shell [-h|--help] [<command>] | |
| ## | |
| ## Creates an SSH connection with a device and executes a command. | |
| ## | |
| ## Arguments: | |
| ## -h|--help Print out this message. | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $? | |
| case $1 in | |
| -h|--help) | |
| fx-command-help | |
| exit 0 | |
| ;; | |
| esac | |
| if [[ ! -f "${FUCHSIA_DIR}/.ssh/pkey" ]]; then | |
| fx-warn "Generated SSH key is missing, connections may fail" | |
| fx-warn "Remove ${FUCHSIA_DIR}/.ssh/authorized_keys and run jiri run-hooks to regenerate" | |
| fi | |
| device_addr="$(get-fuchsia-device-addr)" | |
| if [[ -z "${device_addr}" ]]; then | |
| # Error output is provided to stderr by get-fuchsia-device-addr | |
| exit 1 | |
| fi | |
| # Note: I know there are people who don't like the host-key message, but DO NOT | |
| # apply -q here, it silences error messages and makes network and configuration | |
| # failures much harder to diagnose when helping people. The control master will | |
| # mean you only get one per TCP socket, which is once per newly booted host. | |
| # It's not a huge burden compared to end user support. | |
| fx-command-exec ssh "${device_addr}" "$@" |