#!/usr/bin/env bash # ====================================================================== # # DEPLOYMENT CLIENT :: CHECK STATUS # # ---------------------------------------------------------------------- # 2023-12-11 v0.1 <axel.hahn@iml.unibe.ch> first lines... # 2023-12-14 v0.2 <axel.hahn@iml.unibe.ch> detect profile without logfile # ====================================================================== # ---------------------------------------------------------------------- # CONFIG # ---------------------------------------------------------------------- cd $( dirname $0 ) selfdir=$( /bin/pwd ) logdir=/var/log/imldeployment-client tmpfile=/tmp/deploystatus.log typeset -i iErrors=0 typeset -i iUnknown=0 typeset -i iCount=0 # ---------------------------------------------------------------------- # FUNCTIONS # ---------------------------------------------------------------------- # get a list profiles by searching a config.sh # no param function getprofiles(){ find ${selfdir}/profiles/ -name "config.sh" | rev | cut -f 2 -d "/" | rev } # ---------------------------------------------------------------------- # MAIN # ---------------------------------------------------------------------- for myprofile in $( getprofiles ) do iCount+=1 logfile=$( ls -tr1 ${logdir}/${myprofile}__* | tail -1 ) if [ -z "$logfile" ]; then echo "UNKNOWN: $myprofile - was created but not rolled out yet." iUnknown+=1 else if grep "^OK: ${myprofile}$" $logfile >/dev/null; then echo "OK: $myprofile - $logfile" else iErrors+=1 echo "ERROR: $myprofile - $logfile" echo " Last lines:" tail -10 "${logfile}" | sed "s#^# #g" echo fi fi done > "$tmpfile" if [ $iCount -eq 0 ]; then echo "UNKNOWN: Deployment No profile was created yet." else if [ $iErrors -eq 0 ]; then if [ $iUnknown -gt 0 ]; then echo -n "UNKNOWN" else echo -n "OK" fi else echo -n "ERROR" fi echo ": Deployment ... Profiles: $iCount ... Errors: $iErrors" cat "$tmpfile" fi rm -f "$tmpfile" exit $iErrors # ----------------------------------------------------------------------