HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //lib/check_mk_agent/local/Status_Jetbackup_LastRun
#!/bin/bash
# CheckMK Local Check – Monitor JetBackup Last Backup Status (fixed for active jobs)

API_OUTPUT=$(jetbackup5api -F listBackupJobs -O json 2>/dev/null)

if [[ -z "$API_OUTPUT" ]]; then
    echo "2 Status_Jetbackup_LastRun age=0;24;48;; - CRITICAL - Unable to retrieve data from JetBackup API"
    exit 0
fi

# Extract jobs array and filter active jobs with last_run not empty, sort by last_run descending
LAST_COMPLETED=$(echo "$API_OUTPUT" | \
  jq -r '.data.jobs[] | select(.disabled == 0 and .last_run != "") | .last_run' | \
  sort -r | head -n1)

RUNNING=$(echo "$API_OUTPUT" | jq -r '.data.jobs[] | select(.disabled == 0) | .running' | grep true | head -n1)

if [[ -z "$LAST_COMPLETED" ]]; then
    echo "2 Status_Jetbackup_LastRun age=0;24;48;; - CRITICAL - No completed backup found"
    exit 0
fi

LAST_EPOCH=$(date -d "$LAST_COMPLETED" +%s)
NOW_EPOCH=$(date +%s)
AGE_HOURS=$(( (NOW_EPOCH - LAST_EPOCH) / 3600 ))

WARN_THRESHOLD=24
CRIT_THRESHOLD=48

if [[ "$RUNNING" == "true" && $AGE_HOURS -gt $WARN_THRESHOLD ]]; then
    echo "2 Status_Jetbackup_LastRun age=${AGE_HOURS}h;${WARN_THRESHOLD};${CRIT_THRESHOLD};; - CRITICAL - Backup job running too long (${AGE_HOURS}h)"
    exit 0
fi

if [[ $AGE_HOURS -gt $CRIT_THRESHOLD ]]; then
    STATE=2
    STATUS_TEXT="CRITICAL - Last backup ${AGE_HOURS}h ago"
elif [[ $AGE_HOURS -gt $WARN_THRESHOLD ]]; then
    STATE=1
    STATUS_TEXT="WARNING - Last backup ${AGE_HOURS}h ago"
else
    STATE=0
    STATUS_TEXT="OK - Last backup ${AGE_HOURS}h ago"
fi

echo "$STATE Status_Jetbackup_LastRun age=${AGE_HOURS}h;${WARN_THRESHOLD};${CRIT_THRESHOLD};; - $STATUS_TEXT"