1*9c5db199SXin Li#!/bin/sh 2*9c5db199SXin Li 3*9c5db199SXin Li# Copyright 2017 The Chromium OS Authors. All rights reserved. 4*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 5*9c5db199SXin Li# found in the LICENSE file. 6*9c5db199SXin Li 7*9c5db199SXin Li# This script updates chameleon boards and cle in the audioboxes 8*9c5db199SXin Li# and atlantis labs. This script takes about 15-30s per board. 9*9c5db199SXin Li 10*9c5db199SXin LiHOSTS="chromeos9-audiobox1-host2 11*9c5db199SXin Li chromeos9-audiobox2-host1" 12*9c5db199SXin Li 13*9c5db199SXin Li# NOTE: May need to update based on where test_rsa is located. 14*9c5db199SXin LiSSH_OPTIONS="-q -i ~/.ssh/.test_rsa \ 15*9c5db199SXin Li -o UserKnownHostsFile=/dev/null \ 16*9c5db199SXin Li -o StrictHostKeyChecking=no" 17*9c5db199SXin Li 18*9c5db199SXin LiPROBE_RESULT_DIR="/tmp/chameleon_update_result" 19*9c5db199SXin Li 20*9c5db199SXin LiSEP_LINE="--------------------------------------------------------------------------------" 21*9c5db199SXin Li 22*9c5db199SXin Li 23*9c5db199SXin Lifunction disp_result { 24*9c5db199SXin Li test "$1" -eq "0" && echo ok || echo "-" 25*9c5db199SXin Li} 26*9c5db199SXin Li 27*9c5db199SXin Lifunction probe_chameleon { 28*9c5db199SXin Li chameleon="$1-chameleon.cros" 29*9c5db199SXin Li 30*9c5db199SXin Li # ping test 31*9c5db199SXin Li ping -q -w 10 -c1 "${chameleon}" > /dev/null 2>&1 32*9c5db199SXin Li ping_result="$(disp_result $?)" 33*9c5db199SXin Li 34*9c5db199SXin Li # Check if chameleond is running. 35*9c5db199SXin Li test $(ssh ${SSH_OPTIONS} root@"$chameleon" \ 36*9c5db199SXin Li ps | awk '$5~"run_chameleond"' | wc -l) -gt "0" 37*9c5db199SXin Li chameleond_result="$(disp_result $?)" 38*9c5db199SXin Li 39*9c5db199SXin Li # clear /dev/root space 40*9c5db199SXin Li ssh $SSH_OPTIONS root@"$chameleon" "echo "" > /www/logs/lighttpd.error.log" 41*9c5db199SXin Li root_result="$(disp_result $?)" 42*9c5db199SXin Li 43*9c5db199SXin Li # run update command 44*9c5db199SXin Li ssh $SSH_OPTIONS root@"$chameleon" "/etc/init.d/chameleon-updater start >/dev/null 2>&1" 45*9c5db199SXin Li update_result="$(disp_result $?)" 46*9c5db199SXin Li 47*9c5db199SXin Li # Print the result 48*9c5db199SXin Li printf "$1-chameleon %5s %10s %10s %s\n" "${ping_result}" \ 49*9c5db199SXin Li "${chameleond_result}" "${root_result}" "${update_result}" \ 50*9c5db199SXin Li > "${PROBE_RESULT_DIR}/${chameleon}" 51*9c5db199SXin Li} 52*9c5db199SXin Li 53*9c5db199SXin Lifunction probe_chameleons { 54*9c5db199SXin Li # Fork parallel processes to probe the chameleon boards. 55*9c5db199SXin Li for host in $HOSTS; do 56*9c5db199SXin Li probe_chameleon $host & 57*9c5db199SXin Li chameleon_pids="${chameleon_pids} $!" 58*9c5db199SXin Li done 59*9c5db199SXin Li} 60*9c5db199SXin Li 61*9c5db199SXin Lifunction create_ping_result_dir { 62*9c5db199SXin Li dut_pids="" 63*9c5db199SXin Li chameleon_pids="" 64*9c5db199SXin Li 65*9c5db199SXin Li mkdir -p "${PROBE_RESULT_DIR}" 66*9c5db199SXin Li rm -fr "${PROBE_RESULT_DIR}"/* 67*9c5db199SXin Li} 68*9c5db199SXin Li 69*9c5db199SXin Lifunction print_chameleon_status { 70*9c5db199SXin Li echo "Chameleon ping chameleond root update" 71*9c5db199SXin Li echo "${SEP_LINE}" 72*9c5db199SXin Li 73*9c5db199SXin Li # Wait for all probing children processes to terminate. 74*9c5db199SXin Li for pid in ${chameleon_pids}; do 75*9c5db199SXin Li wait ${pid} 76*9c5db199SXin Li done 77*9c5db199SXin Li 78*9c5db199SXin Li # Sort and print the results. 79*9c5db199SXin Li cat "${PROBE_RESULT_DIR}"/*-chameleon.cros | sort 80*9c5db199SXin Li echo; echo 81*9c5db199SXin Li} 82*9c5db199SXin Li 83*9c5db199SXin Licreate_ping_result_dir 84*9c5db199SXin Liprobe_chameleons 85*9c5db199SXin Liprint_chameleon_status 86