s4ros icon

adselect_unimplemented_watchdog.sh

s4ros | PRO | 09/20/17 03:41:28 PM UTC | 0 ⭐ | 399 👁️ | Never ⏰ | []
Bash |

1.6 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
 
logline='event reporting instance is not ready to be reused'
logfile=$(ls -1tr /opt/ang/log/adselect/adselect.log)
 
if [[ $(id -u) -ne 0 ]]; then
    echo "${0} has to be executed as root!"
    exit 1
fi
 
# returns adselect running time in epoch
function get_adselect_run_time() {
    echo $(date "+%s" -d "$(ps -eo time,cmd | grep adselect.fcgi | grep -v grep | sort -k1 -n -r | head -n 1 | awk {'print $1'})")
}
 
# returns timestamp from the last line in $logfile in epoch
function get_time_from_log() {
    echo $(date "+%s" -d "$(tail -n 1 $logfile | awk '{print $1,$2}')")
}
 
# returns current date in epoch
function get_current_time() {
    echo $(date "%s")
}
 
# /////////////////////////////////////////////////////////////////////
# // MAIN
function main() {
    adselect_restart=0
    adselectrun=$(get_adselect_run_time)
    timefromlog=$(get_time_from_log)
    if [[ $timefromlog -gt $adselectrun ]]; then
        tail -n 20 $logfile | grep "$logline" > /dev/null
        if [[ $? -eq 0 ]]; then
            adselect_restart=1
        fi
        cat $(ls -1t /opt/ang/log/adselect-req9/*.log | tail -n 1) | tail -n 20 | grep 'unimplemented' > /dev/null
        if [[ $? -eq 0 ]]; then
            echo "unimplemented log found"
            adselect_restart=1
        fi
        if [[ $adselect_restart -eq 1 ]]; then
            echo "adselect have to be restarted"
            echo $(hostname)
            echo $(curl -s showip.net;echo)
            service adselect stop
            sleep 3
            service adselect start
        fi
    fi
 
 
}
 
main

Comments