#!/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' } 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' # Filtering out: all but accepted chars # echo $1 | sed "s/[^a-Z0-9_\-]//Ig" }