manage_server: Add new command to view log remotely
This commit is contained in:
parent
d7686f68c0
commit
ba75c5c8fd
2 changed files with 145 additions and 32 deletions
|
@ -5,53 +5,99 @@ cd $(dirname "$0")
|
|||
WKS_LIST="apl"
|
||||
SRV_LIST="moore noyce hamano cpp"
|
||||
|
||||
ACTIONS="start stop restart update"
|
||||
KNOWN_ACTIONS="start stop restart update log viewlog view_log"
|
||||
|
||||
LOG=`mktemp`
|
||||
|
||||
for ACT in $ACTIONS
|
||||
ACTIONS=
|
||||
DESTS=
|
||||
USED=1
|
||||
while [ $# -gt 0 ] && [ $USED -eq 1 ]
|
||||
do
|
||||
if [ -n "$1" ] && [ "$1" == "$ACT" ]
|
||||
|
||||
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
|
||||
ACTION="$ACT"
|
||||
break
|
||||
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 "$ACTION" ]
|
||||
|
||||
if [ -z "$ACTIONS" ]
|
||||
then
|
||||
echo "Usage: $0 [$ACTIONS]"
|
||||
echo "Usage: $0 [where] <`echo $KNOWN_ACTIONS | sed 's/ /|/g'`> [options]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FAIL=0
|
||||
for SRV in $SRV_LIST
|
||||
do
|
||||
echo -e "\e[1;34m>>>\e[0m $ACTION on $SRV"
|
||||
if [ "$ACTION" == "update" ]
|
||||
then
|
||||
ssh root@$SRV "make -C liblerdorf update upgrade"
|
||||
else
|
||||
ssh root@$SRV '~'/liblerdorf/process/launch.sh "$ACTION"
|
||||
fi
|
||||
if [ -z "$DESTS" ]
|
||||
then
|
||||
DESTS="$SRV_LIST $WKS_LIST"
|
||||
fi
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo -e "\e[1;32m>>>\e[0m $ACTION success on $SRV" | tee -a "$LOG"
|
||||
else
|
||||
echo -e "\e[1;31m>>>\e[0m $ACTION fails on $SRV" | tee -a "$LOG"
|
||||
FAIL=1
|
||||
fi
|
||||
echo
|
||||
OPTIONS=
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
OPTIONS="$OPTIONS $1"
|
||||
shift
|
||||
done
|
||||
|
||||
for WKS in $WKS_LIST
|
||||
FAIL=0
|
||||
for ACTION in $ACTIONS
|
||||
do
|
||||
echo -e "\e[1;34m>>>\e[0m $ACTION on $WKS"
|
||||
if [ "$ACTION" == "update" ]
|
||||
then
|
||||
ssh root@$SRV "make -C liblerdorf update upgrade"
|
||||
fi
|
||||
echo
|
||||
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"
|
||||
|
|
67
process/view_log.sh
Normal file
67
process/view_log.sh
Normal file
|
@ -0,0 +1,67 @@
|
|||
#! /bin/sh
|
||||
|
||||
cd `dirname $0`/..
|
||||
|
||||
UN=$1
|
||||
if [ "$1" = "full" ]
|
||||
then
|
||||
CMD=cat
|
||||
shift
|
||||
elif echo "$1" | grep -e '^-' > /dev/null
|
||||
then
|
||||
CMD="tail -n `echo $1 | cut -d '-' -f 2-`"
|
||||
shift
|
||||
else
|
||||
CMD="tail -n 50"
|
||||
fi
|
||||
|
||||
TMP=`mktemp`
|
||||
|
||||
DIRS="./"
|
||||
if [ -d "/var/log/hooks/" ]
|
||||
then
|
||||
DIRS="$DIRS /var/log/hooks/"
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
|
||||
for D in $DIRS
|
||||
do
|
||||
for I in `find "$D" -name '*.log'`
|
||||
do
|
||||
/bin/echo -e "`dirname ${I#$D}`/\e[1m`basename $I`\e[0m"
|
||||
done
|
||||
done
|
||||
|
||||
else
|
||||
|
||||
LIST=`mktemp`
|
||||
|
||||
find $DIRS -name '*.log' > $LIST
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
|
||||
NB=`grep "/$1" "$LIST" | wc -l`
|
||||
if [ $NB = 1 ]
|
||||
then
|
||||
$CMD `grep "/$1" "$LIST"`
|
||||
echo
|
||||
elif [ $NB -gt 1 ]
|
||||
then
|
||||
echo "Too much matching file for '$1':"
|
||||
for I in `grep "$1" "$LIST" | sed -E 's#^./##'`
|
||||
do
|
||||
/bin/echo -e "`dirname $I`/\e[1m`basename $I`\e[0m"
|
||||
done
|
||||
else
|
||||
echo "Unable to find '$1' log file"
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
|
||||
done
|
||||
|
||||
rm -rf "$LIST";
|
||||
fi
|
Reference in a new issue