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