1c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury#!/bin/bash 2c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury# Use of this source code is governed by a BSD-style license that can be 4c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury# found in the LICENSE file. 5c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khouryfind_common_sh() { 6c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury local common_paths=(/usr/lib/crosutils $(dirname "$0")) 7c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury local path 8c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 9c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury SCRIPT_ROOT= 10c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury for path in "${common_paths[@]}"; do 11c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury local common="${path}/common.sh" 12c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury if ([ -r "${common}" ] && . "${common}" && [ -d "${SCRIPTS_DIR}" ]); then 13c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury SCRIPT_ROOT="${path}" 14c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury break 15c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury fi 16c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury done 17c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury} 18c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khouryfind_common_sh 19c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury. "${SCRIPT_ROOT}/common.sh" || ! echo "Unable to load common.sh" || exit 1 20c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 21c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryDEFAULT_PRIVATE_KEY="${GCLIENT_ROOT}/src/scripts/mod_for_test_scripts/\ 22c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khouryssh_keys/testing_rsa" 23c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 24c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryTMP="/tmp/dejagnu-tests/" 25c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryTMP_PRIVATE_KEY=${TMP}/private_key 26c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryTMP_KNOWN_HOSTS=${TMP}/known_hosts 27c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryCONTROL_PATH="${TMP}/%r@%h:%p" 28c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhourySSH_ARGS="-p22 -o StrictHostKeyChecking=no \ 29c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury -o UserKnownHostsFile=${TMP_KNOWN_HOSTS} -i ${TMP_PRIVATE_KEY}" 30c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 31c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_init_remote() { 32c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury mkdir -p ${TMP} 33c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury cp ${DEFAULT_PRIVATE_KEY} ${TMP_PRIVATE_KEY} 34c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury chmod 0400 ${TMP_PRIVATE_KEY} 35c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury PS1=. TERM=linux ssh ${SSH_ARGS} -t -t -M -S "${CONTROL_PATH}" root@$1 \ 36c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury >/dev/null 2>&1 & 37c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury echo $! > "${TMP}/master-pid" 38c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury dejagnu_ssh root@$1 -- "echo Connection OK." 39c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury} 40c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 41c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_cleanup_remote() { 42c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury set +e 43c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury kill "$(cat ${TMP}/master-pid)" 44c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury set -e 45c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury rm -rf "${TMP}" 46c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury} 47c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 48c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_ssh() { 49c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury COMMAND="ssh ${SSH_ARGS} -t -o ControlPath=${CONTROL_PATH} $@" 50c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury # TODO(raymes): Remove this timeout hack once our tests run without 51c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury # infinite loops. 52c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury TIMEOUT_COMMAND="$(echo "$COMMAND" | sed "s/sh -c '/sh -c 'timeout 5 /g")" 53c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury $TIMEOUT_COMMAND 54c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury} 55c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury 56c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_scp() { 57c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury scp ${SSH_ARGS} -o ControlPath="${CONTROL_PATH}" $@ 58c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury} 59