| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| CREATED_FIFO=0 |
| |
| FIFO=$1 |
| [[ -z $FIFO ]] && echo "A FIFO name must be specified" && exit 1 |
| |
| LOG_FILE=/tmp/${FIFO##*/}.log |
| |
| stopping() |
| { |
| PROLOGUE=$(echo "$(date +"%a %b %e %X %Y")": \[$PPID:$$\]) |
| echo "$PROLOGUE" STOPPING >>$LOG_FILE |
| } |
| |
| start_shutdown() |
| { |
| |
| |
| |
| ( sleep 0.5 |
| kill -ALRM $$ |
| ) & |
| } |
| |
| trap "{ stopping; [[ $CREATED_FIFO -eq 1 ]] && rm -f $FIFO; exit 0; }" HUP INT QUIT USR1 USR2 PIPE ALRM |
| trap start_shutdown TERM |
| |
| if [[ ! -p $FIFO ]]; then |
| mkfifo $FIFO |
| if [[ $? -eq 0 ]]; then |
| CREATED_FIFO=1 |
| else |
| echo "Unable to create fifo $FIFO" |
| exit 1 |
| fi |
| fi |
| |
| |
| |
| |
| while [[ 1 ]] |
| do |
| [[ ! -p $FIFO ]] && echo FIFO $FIFO missing && exit 1 |
| |
| while read line; do |
| PROLOGUE=$(echo "$(date +"%a %b %e %X %Y")": \[$PPID:$$\]) |
| set $line |
| TYPE=$1 |
| if [[ $TYPE = INSTANCE || $TYPE = GROUP ]]; then |
| VRRP_INST=${2//\"/} |
| STATE=$3 |
| PRIORITY=$4 |
| |
| |
| echo "$PROLOGUE" $TYPE $VRRP_INST $STATE $PRIORITY >>$LOG_FILE |
| elif [[ $TYPE = VS ]]; then |
| VS=$2 |
| STATE=$3 |
| |
| |
| echo "$PROLOGUE" $TYPE $VS $STATE >>$LOG_FILE |
| elif [[ $TYPE = RS ]]; then |
| RS=$2 |
| VS=$3 |
| STATE=$4 |
| |
| |
| echo "$PROLOGUE" $TYPE $RS $VS $STATE >>$LOG_FILE |
| else |
| echo "$PROLOGUE" $TYPE - unknown "($*)" >>$LOG_FILE |
| fi |
| done < $FIFO |
| |
| echo "$PROLOGUE" STOPPED >>$LOG_FILE |
| done |