diff --git a/check_backup_one b/check_backup_one index 90e51288e2502b6ce830f77db67673fd9d7dd639..27ac16d22c32213662c57166b656ffef27988b51 100755 --- a/check_backup_one +++ b/check_backup_one @@ -11,33 +11,105 @@ # # ---------------------------------------------------------------------- # 2020-07-27 v0.x <axel.hahn@iml.unibe.ch> +# 2023-12-20 v0.2 <axel.hahn@iml.unibe.ch> # ====================================================================== -. `dirname $0`/inc_pluginfunctions +. $(dirname $0)/inc_pluginfunctions +export self_APPVERSION=0.2 + +sInstalldir=/opt/imlbackup/server +sScript=storage_helper.sh +sMode= + +# ---------------------------------------------------------------------- +# FUNCTIONS +# ---------------------------------------------------------------------- + +function showHelp(){ + local _self; _self=$(basename $0) + cat <<EOF +$( ph.showImlHelpHeader ) + +Show status of backup server. +You can get the count of connections or the status of server backup. + +See https://os-docs.iml.unibe.ch/iml-backup-server/ + +SYNTAX: +$_self [-d DIRECTORY] + +OPTIONS: + -h or --help show this help. + -d or --dir set installation dir of iml deployment to find its check skript + default dir: ${sInstalldir} + script: ${sInstalldir}/${sScript} + -m or --mode mode: set type of result; one of status|backupstatus + backupstatus status of backup sets of all servers + status count of connected servers + +EXAMPLE: +$_self -m status +$_self -m backupstatus + +EOF +} -myscript=/opt/imlbackup/server/storage_helper.sh # ---------------------------------------------------------------------- # MAIN # ---------------------------------------------------------------------- -if [ ! -x $myscript ]; then - ph.abort "UNKNOWN: $myscript is not available / executable." +# --- check param -h +while [[ "$#" -gt 0 ]]; do case $1 in + -h|--help) showHelp; exit 0;; + -d|--dir) sInstalldir=$2; shift ;shift;; + -m|--mode) sMode=$2; + shift ;shift + if ! grep -E "^(status|backupstatus)$" <<< "$sMode" >/dev/null; then + ph.abort "ERROR: unknown mode [$sMode]." + fi + ;; + *) echo "ERROR: Unknown parameter: $1"; showHelp; exit 1; +esac; done + +if [ -z "$sMode" ]; then + ph.abort "ERROR: The mode was not set. Use parameter -m." +fi + +myscript="$sInstalldir/$sScript" + +if [ ! -x "$myscript" ]; then + ph.abort "UNKNOWN: $myscript is not available / executable. Use -d to fix the installation dir." fi # --- read data -tmpfile=$( mktemp ) -$myscript status > $tmpfile -typeset -i iRunning=`cat $tmpfile | grep "STATUS" | cut -f 2 -d " "` -typeset -i iMax=` cat $tmpfile | grep "STATUS" | cut -f 8 -d " " | tr -d '.'` +data=$( "$myscript" "$sMode" ) + +case "$sMode" in + "backupstatus") + typeset -i iTotal; iTotal=$( grep "^total : " <<< "$data" | cut -f 2 -d ":" | awk '{ print $1 }' ) + typeset -i iErrors; iErrors=$( grep "^errors: " <<< "$data" | cut -f 2 -d ":") + + if [ $iErrors -gt 0 ]; then + ph.setStatus critical + fi + ph.status "Server Backups - $iTotal server - $iErrors errors" + echo "$data" + + ;; + "status") + typeset -i iRunning; iRunning=$( grep "STATUS" <<< "$data" | cut -f 2 -d " ") + typeset -i iMax; iMax=$( grep "STATUS" <<< "$data" | cut -f 8 -d " " | tr -d '.') + + # --- status output + ph.status "Backups running: $iRunning (max $iMax)" + # echo "$data" -# --- status output -ph.status "Backups running: $iRunning (max $iMax)" -cat $tmpfile -rm -f $tmpfile + ph.perfadd "running" "${iRunning}" "" "" 0 $iMax + ;; +esac -ph.perfadd "running" "${iRunning}" "" "" 0 $iMax ph.exit # ---------------------------------------------------------------------- diff --git a/check_deployment b/check_deployment index 9ee8ee58174582637b902931247f2978caf8b98d..a2334e7a387521c7dada1a9717da77062f9234f3 100755 --- a/check_deployment +++ b/check_deployment @@ -49,7 +49,7 @@ esac; done sChecker=$sInstalldir/check_deployment.sh -if [ ! -x $sChecker ]; then +if [ ! -x "$sChecker" ]; then ph.abort "$sChecker not found - maybe deployment is not installed here. Use param -d to set the install directory." fi