ROOTPLOIT
Server: Apache
System: Linux node6122.myfcloud.com 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64
User: bashacomputer (1004)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib64/nagios/plugins/check_a2_backups
#!/bin/bash

# LC - 24/08/2020 - Option to consider new provisions | SYSENG-1299
now=$(date +%s)
upseconds=$(( $(awk -F. '{print $1}' /proc/uptime) ))
miniontime=$((now - $(stat -c %Y /etc/salt/minion) ))
# Uptime limit, 5 days
uplimit=432000
if [[ ${upseconds} -lt ${uplimit} ]] && [[ ${miniontime} -lt ${uplimit} ]]; then
  echo "Backups - New provision"
  exit 0
fi

# KLY - 2023-03-20 - Check if we are instead using jetbackup - SYSENG-18454
rpm -q jetbackup5-base --quiet
if [[ $? -eq 0 ]]; then
  echo "Backups - handled by Jetbackup"
  exit 0
fi

# BFENG-1633 - disabling alerts for vplatorm servers.
if [[ $(hostname) =~ vplatform ]]; then
  echo "Backups - Platform servers need not be backed up"
  exit 0 
fi

# LC - 12/12/2017 - Added option to consider Backup maintenance period | OPS-709
m_start=200 #2:00 AM - Maintenance start
m_finish=530 #5:00 AM - Maintenance finish + 30m grace time
check_hour=$(date +%H%M | sed 's/^0//')
if [[ ${check_hour} -ge ${m_start} ]] && [[ ${check_hour} -le ${m_finish} ]]; then
  echo "Backups - Backup maintenance period"
  exit 0
fi

# LC - 15/3/2023 - Additionally exclude JBK servers
if [ -e /root/.no_backup_mounts ] || [[ $(hostname) =~ dedibackup ]] || [[ $(hostname) =~ jbk ]]; then
  echo "Backups - Not supposed to be backed up or mounted"
  exit 0
fi

CHECKFILE=var/log/messages

VALID=0
LAST=0
NEWENOUGH=0
THREE_DAYS_AGO=$(( `date +%s` - 604800 ))
THREE_DAYS_AGO=`date +%Y%m%d -d @$THREE_DAYS_AGO`
BACKUP_SERVER=`cat /etc/a2dp/backup_location`

if [ ! -d /app/backups ] || [ ! -e /etc/a2dp/backup_location ]; then
  echo "Backups - Seemingly NOT being backed up AT ALL!"
  exit 2
fi

for DATE in `ls -1 /app/backups`;do
  if [ -e /app/backups/$DATE/$CHECKFILE ]; then
    FILEDATE=`ls -ld --time-style='+%Y%m%d' /app/backups/$DATE/$CHECKFILE|awk '{print $6}'`
    if (( $FILEDATE >= $LAST )); then
      VALID=$(( $VALID + 1 ))
      LAST=$FILEDATE
      if (( $FILEDATE >= $THREE_DAYS_AGO )); then
        NEWENOUGH=1
      fi
    fi
  fi
done

case "$VALID" in
   0)
   MESSAGE="2 Backups - $BACKUP_SERVER: No Valid Backups"
   EXITCODE=2
   ;;
   1|2|3|4|5)
   MESSAGE="1 Backups - $BACKUP_SERVER: Only $VALID valid Backups"
   if  (( $NEWENOUGH != 1 )); then
     MESSAGE="$MESSAGE and none are new enough"
   fi
   EXITCODE=1
   ;;
   *)
   if  (( $NEWENOUGH != 1 )); then
     MESSAGE="1 Backups - $VALID valid backups but  none are new enough"
     EXITCODE=1
   else
     MESSAGE="0 Backups - $VALID valid backups"
     EXITCODE=0
   fi
   ;;
esac

if ! mountpoint -q /app/backups ; then
  MESSAGE="2 Backups - $BACKUP_SERVER: NFS not mounted"
  EXITCODE=2
fi

if [[ -z ${EXITCODE} ]]; then
  EXITCODE=0
fi

echo $MESSAGE
exit $EXITCODE