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