whoami7 - Manager
:
/
lib64
/
nagios
/
plugins
/
Upload File:
files >> //lib64/nagios/plugins/check_backup.sh
#!/bin/bash ################################################### # # # Created by Max N. check_backup.sh v.0.2.1 # # # ################################################### # DEFF VARS cp_backup_iscsid_check=1 cp_backup_iscsi_session_check=1 cp_backup_fstab_check=1 cp_backup_mount_check=1 cp_backup_rofs_check=1 cp_backup_whm_check=1 cp_backup_cpbackup_age_check=1 cp_backup_mkfs_check=1 cp_backup_spaceCrit=5 wMINUTES=$[7200 * 60 ] cMINUTES=$[11520 * 60] while getopts w:c:htisfmrWaS: opts; do case ${opts} in h) echo -e " Help: Usage: check_backup.sh [arg]...[arg] [list of args] -t # equal echo test -w 'min' # equal wMINUTES=\$['min' * 60 ] -c 'min' # equal cMINUTES=\$['min' * 60 ] -i # equal cp_backup_iscsid_check=0 -s # equal cp_backup_iscsi_session_check=0 -f # equal cp_backup_fstab_check=0 -m # equal cp_backup_mount_check=0 -r # equal cp_backup_rofs_check=0 -W # equal cp_backup_whm_check=0 -a # equal cp_backup_cpbackup_age_check=0 -k # equal cp_backup_mkfs_check=0 -S 'crit free space in %' # equal cp_backup_spaceCrit='crit free space in %' -h # equal this message \n" && exit ;; t) echo test ;; w) wMINUTES=$[${OPTARG} * 60] ;; c) cMINUTES=$[${OPTARG} * 60] ;; i) cp_backup_iscsid_check=0 ;; s) cp_backup_iscsi_session_check=0 ;; f) cp_backup_fstab_check=0 ;; m) cp_backup_mount_check=0 ;; r) cp_backup_rofs_check=0 ;; W) cp_backup_whm_check=0 ;; a) cp_backup_cpbackup_age_check=0 ;; k) cp_backup_mkfs_check=0 ;; S) cp_backup_spaceCrit=${OPTARG} ;; esac done #"${A}" #exit 0 #echo $wMINUTES #echo $cMINUTES ## check if iscsid is running ? if (($cp_backup_iscsid_check == 1)); then if [[ ! $(ps aux | grep "[i]scsid") ]]; then status="[CRITICAL:]" statustxt="Service iscsid down" echo $status $statustxt exit 2; fi fi DRIVE=$(sudo /sbin/service iscsi status | grep "Attached scsi disk"| awk '{print $4}'); TARGET=$(sudo /sbin/service iscsi status | grep Target:| awk '{print $2}'); STATE=$(sudo /sbin/service iscsi status | grep "Attached scsi disk"| awk '{print $6}'); NOSESSION=$(sudo /sbin/service iscsi status| grep -o "No active sessions") #check if iscssi had valid session if (($cp_backup_iscsi_session_check == 1)); then if [[ $NOSESSION = "No active sessions" ]] then status="[CRITICAL:]" statustxt="$NOSESSION" echo $status $statustxt exit 2 fi if [ ! $DRIVE ] || [ ! $TARGET ] || [ ! $STATE = "running" ]; then status="[CRITICAL:]" statustxt="Bad iscsi session" echo $status $statustxt exit 2 fi fi if (($cp_backup_fstab_check == 1)); then if [[ ! $(grep "^LABEL=.*[[:space:]].*/backup" /etc/fstab) ]]; then status="[CRITICAL:]" statustxt="No active /backup partition in /etc/fstab" echo $status $statustxt exit 2 fi fi # if some one performed MKFS if (($cp_backup_mkfs_check == 1)); then if [[ $(ps auxf | grep "[m]kfs.xfs" | grep -v -i "screen") ]]; then status="[CRITICAL:]" statustxt="mkfs.xfs in progress\n" echo $status $statustxt exit 2 fi; fi; # check backup partition is mounted ? if (($cp_backup_mount_check == 1));then if [[ ! $(grep "^/dev/sd[a-z]1 /backup " /proc/mounts) ]]; then statustxt="/backup partition is not mounted" if [[ $(ps auxf | grep "[f]sck"| grep -v -i "screen") ]];then statustxt+=" Fsck running !" fi status="[CRITICAL:]" echo $status $statustxt exit 2 fi fi #check RO-FS /backup #touch with sudo only! and check status if (($cp_backup_rofs_check == 1)); then IOerror=$(ls /backup/ro_backup_test.tmp 2>&1| grep -o "Input/output error") if [ $? -eq 0 ]; then status="[CRITICAL:]" statustxt="cannot access /backup: $IOerror" echo $status $statustxt exit 2 fi sudo /bin/touch /backup/ro_backup_test.tmp if [ $? -ne 0 ]; then status="[CRITICAL:]" statustxt="/backup partition is in RO-FS state" echo $status $statustxt exit 2 fi fi #check enabled cp-backup scripts # whmapi need rood permitions if (($cp_backup_whm_check == 1)); then #v1 #info=$(grep -o -E '"MYSQLBACKUP":"accounts".*"BACKUPACCTS":"yes".*"BACKUPDIR":"/backup".*"BACKUP_DAILY_ENABLE":"yes"' /var/cpanel/backups/config.cache) #info2=$(/bin/crontab -l -u root | grep cpbackup) # v2 #info=$(sudo /usr/sbin/whmapi1 backup_config_get) info=$(cat /etc/cpbackup.conf) #echo $info |grep -o -E "backup_daily_enable: 1.*backupaccts: 1.*backupdir: /backup.*mysqlbackup: accounts" #if [[ -z `echo $info |grep -o -E "backup_daily_enable: 1.*backupaccts: 1.*backupdir: /backup.*mysqlbackup: accounts"` ]]; BACKUPACCTS=$(echo $info |grep -o -E "BACKUPACCTS[[:space:]]*yes"); MYSQLBACKUP=$(echo $info |grep -o -E "MYSQLBACKUP[[:space:]]*accounts"); BACKUPINT=$(echo $info |grep -o -E "BACKUPINT[[:space:]]*daily"); BACKUPENABLE=$(echo $info |grep -o -E "BACKUPENABLE[[:space:]]*yes"); BACKUPDIR=$(echo $info |grep -o -E "BACKUPDIR[[:space:]]*/backup"); BACKUPRETDAILY=$(echo $info |grep -o -E "BACKUPRETDAILY[[:space:]]*1"); POSTBACKUP=$(echo $info |grep -o -E "POSTBACKUP[[:space:]]*1"); PREBACKUP=$(echo $info |grep -o -E "PREBACKUP[[:space:]]*1"); #echo "$BACKUPACCTS && $MYSQLBACKUP && $BACKUPINT && $BACKUPENABLE && $BACKUPDIR && $BACKUPRETDAILY" if [[ ! ($BACKUPACCTS && $MYSQLBACKUP && $BACKUPINT && $BACKUPENABLE && $BACKUPDIR && $BACKUPRETDAILY && $POSTBACKUP && $PREBACKUP) ]] then statustxt="Check WHM api backup state FAILED"; status="[CRITICAL:]" echo $status $statustxt exit 2 fi fi #check size /backup partition if (($cp_backup_spaceCrit >= 1)); then cp_backup_spaceWarn=$[$cp_backup_spaceCrit*2] UsedSpace=$(df -h | grep "/backup$" | awk '{print $5}'| awk -F "%" '{print $1}'); FreeSpace=$[100 - $UsedSpace]; if (($FreeSpace <= $cp_backup_spaceCrit)); then statustxt="free space on /backup partition less than $cp_backup_spaceCrit%"; status="[CRITICAL:]" echo $status $statustxt exit 2 elif (($FreeSpace > $cp_backup_spaceCrit)) && (($FreeSpace <= $cp_backup_spaceWarn)); then statustxt="free space on /backup partition less than $cp_backup_spaceWarn%"; status="[WARNING:]" echo $status $statustxt exit 1 fi fi # check cp-bakup age if (($cp_backup_cpbackup_age_check == 1)); then #wMINUTES=$[7200 * 60 ] #cMINUTES=$[11520 * 60] DATENOW=$(date +%s) WHDATE=$(stat -c "%Y" /backup/cpbackup/daily/nctest) #echo $DELTA $wMINUTES $cMINUTES if [[ $(ps ax | grep "[/s]cripts/cpbackup") ]]; then runBKP="[cpbackup in progress]" echo $runBKP exit 3 fi if [[ ! $WHDATE ]] then statustxt="Can't access /backup/cpbackup/daily/nctest file"; status="[CRITICAL:]" echo $status $statustxt exit 2 fi DELTA=$[$DATENOW-$WHDATE] if (( $DELTA <= $wMINUTES )); then echo "[OK]" exit 0; elif (( $DELTA > $wMINUTES )) && (( $DELTA < $cMINUTES )) then statustxt="File older than $[$DELTA /60 /60 /24] day"; status="[WARNING:]" echo $status $statustxt exit 1 elif (( $DELTA > $cMINUTES )); then statustxt="File older than $[$DELTA /60 /60 /24] day"; status="[CRITICAL:]" echo $status $statustxt exit 1 fi fi
Copyright ©2021 || Defacer Indonesia