#! /usr/bin/env bash cd $(dirname "$0") WKS_LIST="apl" SRV_LIST="moore noyce hamano cpp otto" SCP_LIST="ksh knuth" KNOWN_ACTIONS="start stop restart install 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 $SCP_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 $SCP_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" == "install" ] || [ "$ACTION" == "update" ] then SCP=0 for D in $SCP_LIST do if [ $D == $DEST ] then SCP=1 break fi done if [ $SCP -eq 0 ] then if [ "$ACTION" == "install" ] && ! ssh root@$DEST "mkdir -p /home/intradmin/ && git clone '$(echo `git remote -v` | cut -d " " -f 2)' /home/intradmin/liblerdorf && ln -s /home/intradmin/liblerdorf ~/liblerdorf" then exit 1 fi ssh root@$DEST "make -C liblerdorf update upgrade" else cd .. git archive -o ./liblerdorf.tbz2 master scp ./liblerdorf.tbz2 root@$DEST: cd - ssh root@$DEST rm -rf liblerdorf ssh root@$DEST mkdir -p liblerdorf ssh root@$DEST tar xf ./liblerdorf.tbz2 -C liblerdorf ssh root@$DEST "DEST=/usr/local/lib/perl5/5.14/ACU make -C liblerdorf upgrade" fi 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