Archived
1
0
Fork 0

manage_server: Add new command to view log remotely

This commit is contained in:
Mercier Pierre-Olivier 2013-09-28 13:39:31 +02:00
parent d7686f68c0
commit ba75c5c8fd
2 changed files with 145 additions and 32 deletions

View file

@ -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
View 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