diff --git a/check_backup_one b/check_backup_one index 316b37e5f8b65ea4107ed89e513698acc7b6be57..4a11aff742d0cfb6955c01641099d6c406b46967 100755 --- a/check_backup_one +++ b/check_backup_one @@ -1,17 +1,15 @@ #!/bin/bash # ====================================================================== # -# WORK IN PROGRESS +# Check IML BACKUP SERVER # -# Check ONE BACKUP connection count -# -# requirements access to storage_helper.sh -# ls -ld /opt/imlbackup/server/ -# drwxr-x--- 3 imlbackup imlbackup 4096 Jul 27 06:25 /opt/imlbackup/server/ +# requires access to storage_helper.sh +# in /opt/imlbackup/server/ # # ---------------------------------------------------------------------- # 2020-07-27 v0.x <axel.hahn@iml.unibe.ch> # 2023-12-20 v0.2 <axel.hahn@iml.unibe.ch> +# 2023-12-21 v1.0 <axel.hahn@iml.unibe.ch> first version # ====================================================================== @@ -37,7 +35,7 @@ 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] +$_self [-d DIRECTORY] -m MODE OPTIONS: -h or --help show this help. @@ -55,7 +53,15 @@ $_self -m backupstatus EOF } +function _getServerOfStatus(){ + local _key="$1" + local _data="$2" + grep "$_key .*| [0-9].* |" <<< "$_data" +} +function _getStatusCount(){ + _getServerOfStatus "$1" "$2" | wc -l +} # ---------------------------------------------------------------------- # MAIN # ---------------------------------------------------------------------- @@ -74,13 +80,13 @@ while [[ "$#" -gt 0 ]]; do case $1 in esac; done if [ -z "$sMode" ]; then - ph.abort "ERROR: The mode was not set. Use parameter -m." + ph.abort "ERROR: The mode was not set. Use parameter -m for it. Get help wit -h" fi myscript="$sInstalldir/$sScript" if [ ! -x "$myscript" ]; then - ph.abort "UNKNOWN: $myscript is not available / executable. Use -d to fix the installation dir." + ph.abort "UNKNOWN: $myscript is not available / executable. Use -d to fix the installation dir. Get help wit -h" fi # --- read data @@ -91,12 +97,40 @@ case "$sMode" in 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 ":") + typeset -i iOK; iOK=$( _getStatusCount "\." "$data" ) + typeset -i iNotStarted; iNotStarted=$( _getStatusCount "\?" "$data") + typeset -i iDisable; iDisable=$( _getStatusCount "D" "$data" ) + typeset -i iRunning; iRunning=$( _getStatusCount "R" "$data") + if [ $iErrors -gt 0 ]; then ph.setStatus critical fi - ph.status "Server Backups - $iTotal server - $iErrors errors" - echo "$data" | tr '|' ':' - + if [ $iNotStarted -eq $iTotal ]; then + ph.setStatus unknown + fi + ph.status "Server Backups - $iTotal servers in backup - $iErrors errors - $iDisable disbled - $iRunning running" + echo List of server backups grouped by status + echo + ( + # draw 1st line with table header + echo "$data" | grep "server.*start.*end" + echo + + # show servers grouped by status + for mystatus in E D R "\?" D "\." + do + _getServerOfStatus "$mystatus" "$data" + done + echo -e "\e[0m" + echo "$data" | grep "server.*start.*end" + echo + ) | tr '|' ':' + + ph.perfadd "notstarted" "${iNotStarted}" "" "" 0 $iTotal + ph.perfadd "disabled" "${iDisable}" "" "" 0 $iTotal + ph.perfadd "ok" "${iOK}" "" "" 0 $iTotal + ph.perfadd "running" "${iRunning}" "" "" 0 $iTotal + ph.perfadd "error" "${iErrors}" "" "" 0 $iTotal ;; "status") typeset -i iRunning; iRunning=$( grep "STATUS" <<< "$data" | cut -f 2 -d " ")