����JFIF��x�x����'
| Server IP : 78.140.185.180  /  Your IP : 216.73.216.51 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/self/root/proc/self/root/proc/1271035/root/lib64/nagios/plugins/base/ | 
| Upload File : | 
#!/bin/bash
# process args
while [ $# -gt 0 ]; do
   if [[ $1 == *"--"* ]]; then
        v="${1/--/}"
        if [[ $v == 'help' ]]; then
            declare $v=1
            shift
            continue
        fi
        declare $v="$2"
   fi
  shift
done
usage="$(basename "$0") [--dir] [--force_period] - plugin for check backups according to config plan using bkp list.
params:
    --dir           - configs location ( default: /etc/opt/bkp )
    --force_period  - d,w,m - daily,weekly or montly
                      tells that last backup must be not older then period + 1 day
example:
    check_bkp --dir /etc/opt/bkp/solusvm --force_period w"
test $help && echo "$usage" && exit
now=`date +%s`
sec_in_day=86400
exit_status=0
dir=${dir:-/etc/opt/bkp}
case $force_period in
  d)
    period=2
    ;;
  w)
    period=8
    ;;
  m)
    period=32
    ;;
  *)
    period=2
    ;;
esac
## get data for API
if [ -d '/usr/local/solus' ]; then
    while IFS='=' read -r key value; do
        case "$key" in
            pass) password=$value ;;
            host) host=$value     ;;
            user) user=$value     ;;
        esac
    done < '/root/.solusvm_custom_api'
fi
# check if bkp supports multiple profiles in configs
multiprofile=`bkp -? 2>&1 | grep list-profiles`
exclude='/etc/icinga2/plinc/bkp_exclude'
# find all configs in specified dir old than period
for config in `find $dir -maxdepth 1 -type f -mtime +$[period-1] -name "*.yml"`; do
    [[ -f $exclude ]] && grep -q $config $exclude && continue
    config_basename=`basename $config`
    has_daily=`grep -oP "\s+d:" $config`
    test $has_daily && limit=$[sec_in_day*period]
    if [ $force_period ]; then
        limit=$[sec_in_day*period]
    fi
    # solusvm part; need .my.cnf file with all stuff
    if [[ $dir =~ ^/etc/opt/bkp/solusvm/?$ ]]; then
        ctid=`grep -oP "(?<=vm: \')[^\']*" $config`
        if [ -z $ctid ]; then
            exit_text+="can't determine ctid from $config\n"
            exit_status=1
        fi
        type=${config_basename:0:2}
        if [ "$type" = "VM" ]; then
            if [ ! -f "/etc/libvirt/qemu/${ctid}.xml" ]; then
                continue
            fi
            if ! virsh domstate $ctid &>/dev/null; then
                continue
            fi
            vmuuid=`virsh domuuid $ctid | tr -d "\n"`
            read -r vm suspended unsusp_time <<< "$(curl -s -X GET https://${user}:${password}@${host}:5697/is-suspend/${vmuuid} |jq -r '.[] | "\(.uuid) \(.is_suspended) \(.unsusp_time)"')"
            if [ $suspended -eq 1 ]; then
                continue
            fi
            if (( $[now - unsusp_time] < $limit )); then
                continue
            fi
        else
            exit_text+="can't determine virtualization type for $config\n"
            exit_status=1
        fi
    fi
    if [ -n "$multiprofile" ]; then
        for profile in `bkp list-profiles $config`; do
            last_archive_date=`bkp --profile=$profile list $config | tail -1 | grep -oP "\d{4}-\d{2}-\d{2}"`
            if [ ! $last_archive_date ]; then
                exit_text+="can't find last backup for $config_basename:$profile\n"
                exit_status=1
                continue
            fi
            last_archive_seconds=`date +%s -d $last_archive_date`
            if (( $[now - last_archive_seconds] > $limit )); then
                exit_text+="last backup is too old for $config_basename:$profile\n"
                exit_status=1
            fi
        done
    else
        last_archive_date=`bkp list $config | tail -1 | grep -oP "\d{4}-\d{2}-\d{2}"`
        if [ ! $last_archive_date ]; then
            exit_text+="can't find last backup for $config_basename\n"
            exit_status=1
            continue
        fi
        last_archive_seconds=`date +%s -d $last_archive_date`
        if (( $[now - last_archive_seconds] > $limit )); then
            exit_text+="last backup is too old for $config_basename\n"
            exit_status=1
        fi
    fi
done
dir=${dir:-/etc/opt/bkp}
exit_text=${exit_text:-"bkp OK"}
echo -e $exit_text
exit $exit_status