Moorfleeter Deich 216, 22113 Hamburg
+49 1774661716info@bastcom.deMo. - Fr.: 09:00 - 18:00

Blog

ITWeb Knowledge

Das bastCOM-Blogarchiv: Wissen und Anleitungen aus der Web- und IT-Praxis.

check_schedule.sh

← Zurück zum Blog

Überprüfung ob alle Schedule laufen.

 

 

Überprüfung ob alle Schedule laufen.

 

#!/bin/bash

if | "$1" = "--help" || ( "$2" != "mysql" && "$2" != "oracle") ; then

echo "Usage: ./check_schedule.sh <appname> <oracle or mysql>"

exit

elif [ "$2" = oracle ]; then

LOGIN=`php /opt/dcx/bin/dcx_dblogin.php --app $1`
DRIVER=sqlplus
TEMP=/tmp/schedlist
TEMP1=/tmp/schedlist1
STATUSDOC=/tmp/sched_status
AUSGABE=/tmp/sched_ausgabe
echo -n > $STATUSDOC
echo -n > $AUSGABE

SRUN=`echo -e "set head offnset feedback offnSELECT SCHE_ID from DCX_SCHEDULE where SCHE_WORKFLOW_ID like '%action%' and SCHE_STATUS = 1;" | $DRIVER -S $LOGIN | grep -v ^$ | wc -l `

echo `echo -e "set head offnset feedback offnSELECT SCHE_ID, SCHE_NEXT_EXECUTE from DCX_SCHEDULE where SCHE_WORKFLOW_ID like '%action%' and SCHE_STATUS = 1;" | $DRIVER -S $LOGIN | sed 's/-//g' | sed 's/://g'` | sed 's/ sche/nsche/g' > $TEMP

cat $TEMP | sed 's/ /QQQ/g; s/QQQ/ /; s/QQQ//' > $TEMP1

NOWDATE=`date "+%Y%m%d%H%M%S"`
DATESAFE=`date -d"+20 mins" "+%Y%m%d%H%M%S"`

while read NEXTDATE ; do
NEXTDATE2=`echo $NEXTDATE | awk '{print $2}'`
COUNT=$(( $DATESAFE-$NEXTDATE2))
   if [ "$NEXTDATE2" -gt "$NOWDATE" ] || [ "$COUNT" -lt "2000" ] || ( [ "$COUNT" -gt "5000" ] && [ "$COUNT" -lt "6000" ] ) ; then
    echo "OK" >> $STATUSDOC
   else
    echo "ERROR" >> $STATUSDOC
    echo `echo $NEXTDATE | awk '{print $1}'` >> $AUSGABE
   fi
done < $TEMP1

STATUS=`cat $STATUSDOC | uniq`

elif [ "$2" = mysql ]; then

LOGIN=`/usr/local/bin/php  /opt/dcx/bin/dcx_dblogin.php --app $1`
DRIVER=mysql
TEMP=/tmp/schedlist
TEMP1=/tmp/schedlist1
SAFETIME=60
STATUSDOC=/tmp/sched_status
AUSGABE=/tmp/sched_ausgabe
DEBUG=/tmp/debug_sched
echo -n > $STATUSDOC
echo -n > $AUSGABE
echo -n > $DEBUG

echo "SELECT SCHE_ID, SCHE_NEXT_EXECUTE from DCX_SCHEDULE where SCHE_WORKFLOW_ID like '%action%' and SCHE_STATUS = 1;" > /tmp/query

SRUN=`$DRIVER $LOGIN < /tmp/query_test | sed -e '1d' | awk '{print $1}' | sed 's/-//g' | wc -l`

echo `$DRIVER $LOGIN < /tmp/query_test | sed -e '1d' | awk '{print $1,$2,$3}'` | sed 's/ sche/nsche/g' > $TEMP

cat $TEMP | sed 's/ /QQQ/g; s/QQQ/ /; s/QQQ/ / ;s/QQQ//' > $TEMP1

NOWDATE=`date "+%Y%m%d%H%M%S"`

while read NEXTDATE ; do
 NEXTDATE2=`echo $NEXTDATE | awk '{print $2,$3}'`
 RUNTIME=`date -d"$NEXTDATE2 $SAFETIME minutes" "+%Y%m%d%H%M%S"`
   if [ "$RUNTIME" -gt "$NOWDATE" ]; then
    echo "OK" >> $STATUSDOC
   else
    echo "ERROR" >> $STATUSDOC
    echo `echo $NEXTDATE | awk '{print $1}'` >> $AUSGABE
   fi
done < $TEMP1

STATUS=`cat $STATUSDOC | uniq`

fi

if [ "$STATUS" = "OK" ]; then
   echo "OK - $SRUN from $SRUN SCHEDULE running"
  elif [ "$STATUS" != "OK" ]; then
   echo  "CRITICAL - SCHEDULE `cat $AUSGABE` not runing"
fi