230 lines
6.0 KiB
Bash
230 lines
6.0 KiB
Bash
#!/bin/bash
|
|
# General Puppi functions
|
|
|
|
BOOTUP=color
|
|
RES_COL=75
|
|
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
|
|
SETCOLOR_SUCCESS="echo -en \\033[0;32m"
|
|
SETCOLOR_FAILURE="echo -en \\033[0;31m"
|
|
SETCOLOR_WARNING="echo -en \\033[0;33m"
|
|
SETCOLOR_NORMAL="echo -en \\033[0;39m"
|
|
SETCOLOR_TITLE="echo -en \\033[0;35m"
|
|
SETCOLOR_BOLD="echo -en \\033[0;1m"
|
|
|
|
echo_success() {
|
|
[ "$BOOTUP" = "color" ] && $MOVE_TO_COL
|
|
echo -n "["
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
|
|
echo -n $" OK "
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
|
|
echo -n "]"
|
|
echo -ne "\r"
|
|
return 0
|
|
}
|
|
|
|
echo_dontdeploy() {
|
|
[ "$BOOTUP" = "color" ] && $MOVE_TO_COL
|
|
echo -n "["
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
|
|
echo -n $" NO NEED TO DEPLOY "
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
|
|
echo -n "]"
|
|
echo -ne "\r"
|
|
return 0
|
|
}
|
|
|
|
echo_failure() {
|
|
[ "$BOOTUP" = "color" ] && $MOVE_TO_COL
|
|
echo -n "["
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
|
|
echo -n $"FAILED"
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
|
|
echo -n "]"
|
|
echo -ne "\r"
|
|
return 1
|
|
}
|
|
|
|
echo_passed() {
|
|
[ "$BOOTUP" = "color" ] && $MOVE_TO_COL
|
|
echo -n "["
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
|
|
echo -n $"PASSED"
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
|
|
echo -n "]"
|
|
echo -ne "\r"
|
|
return 1
|
|
}
|
|
|
|
echo_warning() {
|
|
[ "$BOOTUP" = "color" ] && $MOVE_TO_COL
|
|
echo -n "["
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
|
|
echo -n $"WARNING"
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
|
|
echo -n "]"
|
|
echo -ne "\r"
|
|
return 1
|
|
}
|
|
|
|
echo_title () {
|
|
echo
|
|
echo
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_TITLE
|
|
echo "$1"
|
|
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
|
|
}
|
|
|
|
check_retcode () {
|
|
if [ $? = "0" ] ; then
|
|
true
|
|
else
|
|
exit 2
|
|
fi
|
|
}
|
|
|
|
handle_result () {
|
|
RETVAL=$?
|
|
if [ "$RETVAL" = "0" ] ; then
|
|
showresult="echo_success"
|
|
result="OK"
|
|
fi
|
|
if [ "$RETVAL" = "1" ] ; then
|
|
showresult="echo_warning"
|
|
EXITWARN="1"
|
|
result="WARNING"
|
|
fi
|
|
if [ "$RETVAL" = "2" ] ; then
|
|
showresult="echo_failure"
|
|
EXITCRIT="1"
|
|
result="CRITICAL"
|
|
fi
|
|
if [ "$RETVAL" = "99" ] ; then
|
|
showresult="echo_dontdeploy"
|
|
DONTDEPLOY="1"
|
|
result="OK"
|
|
fi
|
|
if [ x$show == "xyes" ] ; then
|
|
$showresult
|
|
echo
|
|
echo -e "$output"
|
|
echo
|
|
elif [ x$show == "xfail" ] && [ x$RETVAL != "x0" ] ; then
|
|
$showresult
|
|
echo
|
|
echo -e "$output"
|
|
echo
|
|
fi
|
|
|
|
# Output to file
|
|
if [ ! -d $logdir/$project/$tag ] ; then
|
|
mkdir -p $logdir/$project/$tag
|
|
fi
|
|
let counter=counter+1
|
|
echo $title > $logdir/$project/$tag/$counter-$command
|
|
echo $code >> $logdir/$project/$tag/$counter-$command
|
|
echo $result >> $logdir/$project/$tag/$counter-$command
|
|
echo $output >> $logdir/$project/$tag/$counter-$command
|
|
|
|
}
|
|
|
|
|
|
# Function taken from http://www.threadstates.com/articles/parsing_xml_in_bash.html
|
|
xml_parse () {
|
|
local tag=$1
|
|
local xml=$2
|
|
|
|
# Find tag in the xml, convert tabs to spaces, remove leading spaces, remove the tag.
|
|
grep $tag $xml | \
|
|
tr '\011' '\040' | \
|
|
sed -e 's/^[ ]*//' \
|
|
-e 's/^<.*>\([^<].*\)<.*>$/\1/'
|
|
}
|
|
|
|
# Stores the passed arguments in Project runtime config file
|
|
# Only if the parameter is not already defined
|
|
# Usage:
|
|
# save_runtime_config parameter=value # Sets or overrides parameter
|
|
# save_runtime_config parameter=value notforce # Sets parameters only if is not already set
|
|
save_runtime_config () {
|
|
parameter=$(echo $1 | cut -d '=' -f1)
|
|
value=$(echo $1 | cut -d '=' -f2-)
|
|
force=$2
|
|
|
|
if [[ ! $(grep $parameter $workdir/$project/config) ]] ; then
|
|
echo >> $workdir/$project/config
|
|
echo "# Added by $0" >> $workdir/$project/config
|
|
echo "$parameter=\"$value\"" >> $workdir/$project/config
|
|
else
|
|
# sed -i "/^$parameter=/d" $workdir/$project/config # No real need to remove lines with old configs
|
|
if [[ x$force == xnotforce ]] ; then
|
|
echo >> $workdir/$project/config
|
|
echo "# CHANGE NOT FORCED by $0" >> $workdir/$project/config
|
|
echo "# $parameter=\"$value\"" >> $workdir/$project/config
|
|
else
|
|
echo >> $workdir/$project/config
|
|
echo "# CHANGED by $0" >> $workdir/$project/config
|
|
echo "$parameter=\"$value\"" >> $workdir/$project/config
|
|
fi
|
|
fi
|
|
|
|
}
|
|
|
|
# Adds a runtime comment to Project runtime config file
|
|
save_runtime_comment () {
|
|
echo >> $workdir/$project/config
|
|
echo "# Added by $0" >> $workdir/$project/config
|
|
echo " ## $1" >> $workdir/$project/config
|
|
}
|
|
|
|
|
|
# Stores the passed arguments in Project runtime config file
|
|
# Forces parameter overwrite if already defined
|
|
overwrite_runtime_config () {
|
|
echo "$1" >> $workdir/$project/config
|
|
}
|
|
|
|
ask_interactive () {
|
|
if [ x$show == "xyes" ] ; then
|
|
echo -n $title
|
|
fi
|
|
|
|
if [ "$interactive" = "yes" ] ; then
|
|
echo
|
|
echo "INTERACTIVE MODE: Press 'x' to exit or just return to go on"
|
|
read press
|
|
case $press in
|
|
x) exit 2 ;;
|
|
*) return
|
|
esac
|
|
fi
|
|
}
|
|
|
|
# Shows or executes a command
|
|
show_command () {
|
|
echo
|
|
$SETCOLOR_BOLD ; echo "$HOSTNAME: $*" ; $SETCOLOR_NORMAL
|
|
|
|
bash -c "$*"
|
|
|
|
# Grep filter at show_command level
|
|
# if [ ! -z "$greppattern" ] ; then
|
|
# bash -c "$*" | grep $greppattern
|
|
# else
|
|
# bash -c "$*"
|
|
# fi
|
|
}
|
|
|
|
# Filtering out only: $ ; ` | < >
|
|
shell_filter () {
|
|
echo $1 | sed 's/\$//g' | sed 's/;//g' | sed 's/`//g' | sed 's/|//g' | sed 's/<//g' | sed 's/>//g'
|
|
}
|
|
|
|
shell_filter_strict () {
|
|
# Filtering out: $ ; ` | < > = ! { } [ ] / \ # &
|
|
echo $1 | sed 's/\$//g' | sed 's/;//g' | sed 's/`//g' | sed 's/|//g' | sed 's/<//g' | sed 's/>//g' | sed 's/=//g' | sed 's/!//g' | sed 's/{//g' | sed 's/}//g' | sed 's/\[//g' | sed 's/\]//g' | sed 's/\///g' | sed 's/\\//g' | sed 's/#//g' | sed 's/&//g'
|
|
|
|
# Filtering out: all but accepted chars
|
|
# echo $1 | sed "s/[^a-Z0-9_\-]//Ig"
|
|
}
|
|
|