#! /bin/bash cd $(dirname "$0") WKS_LIST="apl" SRV_LIST="moore noyce hamano cpp" KNOWN_ACTIONS="start stop restart update log viewlog view_log" LOG=`mktemp` ACTIONS= DESTS= USED=1 while [ $# -gt 0 ] && [ $USED -eq 1 ] do USED=0 for ACT in $KNOWN_ACTIONS do if [ -n "$1" ] && [ "$1" == "$ACT" ] then ACTIONS="$ACTIONS $ACT" USED=1 break fi done for DEST in $WKS_LIST $SRV_LIST do if [ -n "$1" ] && [ "$1" == "$DEST" ] then DESTS="$DESTS $DEST" USED=1 break fi done if [ "$1" == "@srv" ] then DESTS="$DESTS $SRV_LIST" USED=1 elif [ "$1" == "@wks" ] then DESTS="$DESTS $WKS_LIST" USED=1 fi if [ $USED -eq 1 ] then shift fi done if [ -z "$ACTIONS" ] then echo "Usage: $0 [where] <`echo $KNOWN_ACTIONS | sed 's/ /|/g'`> [options]" exit 1 fi if [ -z "$DESTS" ] then DESTS="$SRV_LIST $WKS_LIST" fi OPTIONS= while [ $# -gt 0 ] do OPTIONS="$OPTIONS $1" shift done FAIL=0 for ACTION in $ACTIONS do for DEST in $DESTS do echo -e "\e[1;34m>>>\e[0m \e[33m$ACTION\e[0m on \e[1m$DEST\e[0m" if [ "$ACTION" == "update" ] then ssh root@$DEST "make -C liblerdorf update upgrade" elif [ "$ACTION" == "log" ] || [ "$ACTION" == "viewlog" ] || [ "$ACTION" == "view_log" ] then ssh root@$DEST '~'/liblerdorf/process/view_log.sh $OPTIONS else ssh root@$DEST '~'/liblerdorf/process/launch.sh "$ACTION" fi if [ $? -eq 0 ] then echo -e "\e[1;32m>>>\e[0m \e[33m$ACTION\e[0m success on \e[1m$DEST\e[0m" | tee -a "$LOG" else echo -e "\e[1;31m>>>\e[0m \e[33m$ACTION\e[0m fails on \e[1m$DEST\e[0m" | tee -a "$LOG" FAIL=1 fi echo done done cat "$LOG" exit $FAIL