diff options
Diffstat (limited to 'encode-mot.sh')
| -rw-r--r-- | encode-mot.sh | 92 | 
1 files changed, 92 insertions, 0 deletions
| diff --git a/encode-mot.sh b/encode-mot.sh new file mode 100644 index 0000000..ad60bad --- /dev/null +++ b/encode-mot.sh @@ -0,0 +1,92 @@ +#!/bin/bash +# +# Encode programme using libVLC input from +# dabplus-enc or toolame +# +# monitor processes, and restart if necessary +# Optionally send an email when restart happens + +printerr() { +    echo -e "\033[01;31m$1\033[0m" +    logger -p local0.error -t "$ID" "$1" +} + +printmsg() { +    echo -e "\033[01;32m$1\033[0m" +    logger -p local0.notice -t "$ID" "$1" +} + +set -u + +# check number of arguments +if [[ "$#" -lt 3 ]] ; then +    echo "Usage $0 id options" +    exit 1 +fi + +ID=$1 +shift 2 + +OPTIONS=$@ + +running=1 + +encoderpid=0 + +# The trap for Ctrl-C +sigint_trap() { +    printerr "Got Ctrl-C, killing mot-encoder" +    running=0 + +    if [[ "$encoderpid" != "0" ]] ; then +        kill -TERM $encoderpid +    fi + +    printmsg "quitting" +    exit +} + +trap sigint_trap SIGTERM +trap sigint_trap SIGINT + +while [[ "$running" == "1" ]] +do + +    printmsg "Launching mot-encoder" +        mot-encoder $OPTIONS & +        encoderpid=$! +    printerr "Detected crash of encoder!" + +    sleep 5 + +    checkloop=1 +    while [[ "$checkloop" == "1" ]] +    do +        sleep 2 + +        kill -s 0 $encoderpid +        if [[ "$?" != "0" ]] ; then +            printerr "the mot-encoder died" + +            encoderpid=0 +            checkloop=0 +        fi +    done + +    MAILTO=$(cat ./mail-warning.txt) + +    if [[ "$MAILTO" != "" ]] ; then +        NOW=$(date) + +        mail -s "MOT Encoder $ID restart $URL" "$MAILTO" << EOF +The encoder id:$ID +encoding using mot-encoder was restarted at +$NOW + +EOF + +    fi +    sleep 5 + +done + | 
