Files
Linux-Server-Management-Too…/modules/backup/acronis-agent-status.sh
T
cschantz a0fb5e58e9 Add cloud backup storage display via acrocmd list vaults
Added "Cloud Backup Storage" section showing:
- Vault name
- Used storage (occupied)
- Available storage (free quota)

Uses 'acrocmd list vaults' to query actual cloud storage usage
that was previously only visible in web console.

This will show the 19GB backup storage usage the user was asking about.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 16:56:59 -05:00

326 lines
10 KiB
Bash
Executable File

#!/bin/bash
################################################################################
# Acronis Agent Status Checker
################################################################################
# Purpose: Check status of all Acronis Cyber Protect services
# Services monitored:
# - aakore (Acronis Agent Core)
# - acronis_mms (Management Service)
# - acronis_schedule (Scheduler)
# - active-protection.service (Ransomware Protection)
################################################################################
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
source "$SCRIPT_DIR/lib/common-functions.sh"
source "$SCRIPT_DIR/lib/system-detect.sh"
# Require root
if [ "$EUID" -ne 0 ]; then
print_error "This script must be run as root"
exit 1
fi
print_banner "Acronis Agent Status"
echo ""
echo -e "${BOLD}Checking Acronis Cyber Protect Services...${NC}"
echo ""
# Array of services to check
declare -a SERVICES=(
"aakore:Acronis Agent Core"
"acronis_mms:Management Service"
"acronis_schedule:Backup Scheduler"
"active-protection:Ransomware Protection"
)
# Track overall status
all_running=true
any_installed=false
# Function to check service status
check_service_status() {
local service_name="$1"
local service_desc="$2"
# Check if service exists
if systemctl list-unit-files | grep -q "^${service_name}.service"; then
any_installed=true
# Get service status
if systemctl is-active --quiet "$service_name"; then
echo -e " ${GREEN}${NC} ${BOLD}${service_desc}${NC}"
echo -e " Status: ${GREEN}RUNNING${NC}"
# Get uptime
local uptime=$(systemctl show "$service_name" -p ActiveEnterTimestamp --value)
if [ -n "$uptime" ]; then
echo -e " Uptime: ${uptime}"
fi
# Get PID
local pid=$(systemctl show "$service_name" -p MainPID --value)
if [ "$pid" != "0" ]; then
echo -e " PID: ${pid}"
fi
else
all_running=false
echo -e " ${RED}${NC} ${BOLD}${service_desc}${NC}"
echo -e " Status: ${RED}STOPPED${NC}"
# Check if failed
if systemctl is-failed --quiet "$service_name"; then
echo -e " ${RED}[FAILED]${NC} - Service has errors"
fi
fi
echo ""
elif service "$service_name" status &>/dev/null; then
# Fallback to service command for older systems
any_installed=true
if service "$service_name" status | grep -q "running"; then
echo -e " ${GREEN}${NC} ${BOLD}${service_desc}${NC}"
echo -e " Status: ${GREEN}RUNNING${NC}"
else
all_running=false
echo -e " ${RED}${NC} ${BOLD}${service_desc}${NC}"
echo -e " Status: ${RED}STOPPED${NC}"
fi
echo ""
fi
}
# Check each service
for service_entry in "${SERVICES[@]}"; do
IFS=':' read -r service_name service_desc <<< "$service_entry"
check_service_status "$service_name" "$service_desc"
done
# Check if Acronis is even installed
if [ "$any_installed" = false ]; then
echo -e "${YELLOW}${BOLD}⚠ Acronis Agent Not Installed${NC}"
echo ""
echo "Acronis Cyber Protect is not installed on this system."
echo ""
echo "To install:"
echo " 1. Return to Backup & Recovery menu"
echo " 2. Select 'Acronis Management'"
echo " 3. Choose 'Install Acronis Agent'"
echo ""
press_enter
exit 0
fi
echo -e "${CYAN}──────────────────────────────────────────────────────────────${NC}"
echo ""
# Overall status summary
if [ "$all_running" = true ]; then
echo -e "${GREEN}${BOLD}✓ All Services Running${NC}"
echo ""
echo "Acronis Cyber Protect is operational and ready for backups."
else
echo -e "${YELLOW}${BOLD}⚠ Some Services Not Running${NC}"
echo ""
echo "Some Acronis services are stopped. You may want to:"
echo " • Start services: Select 'Service Management' from Acronis menu"
echo " • Check logs: Select 'View Logs' for error details"
echo " • Restart services: Try restarting all services"
fi
echo ""
# Check agent registration status
echo -e "${BOLD}Agent Registration:${NC}"
if [ -f "/var/lib/Acronis/BackupAndRecovery/MMS/user.config" ]; then
# Check for registration info in user.config
if grep -q "<registration>" "/var/lib/Acronis/BackupAndRecovery/MMS/user.config" 2>/dev/null; then
reg_address=$(grep -oP '<address>\K[^<]+' /var/lib/Acronis/BackupAndRecovery/MMS/user.config 2>/dev/null)
reg_env=$(grep -oP '<environment>\K[^<]+' /var/lib/Acronis/BackupAndRecovery/MMS/user.config 2>/dev/null)
if [ -n "$reg_address" ]; then
echo -e " ${GREEN}${NC} Agent is registered with Acronis Cloud"
echo -e " URL: ${reg_address}"
[ -n "$reg_env" ] && echo -e " Environment: ${reg_env}"
else
echo -e " ${YELLOW}${NC} Registration incomplete"
fi
else
echo -e " ${YELLOW}${NC} Agent not registered"
fi
else
echo -e " ${YELLOW}${NC} Configuration file not found"
fi
echo ""
# Check active ports
echo -e "${BOLD}Network Connectivity:${NC}"
# Check for actual Acronis listening ports (deduplicate IPv4/IPv6)
acronis_ports=$(netstat -tlnp 2>/dev/null | grep -E "(acronis|mms|aakore)" | awk '{
split($4, addr, ":");
port = addr[length(addr)];
if (!seen[port]++) {
print $4 " " $7;
}
}')
if [ -n "$acronis_ports" ]; then
echo "Active Acronis services:"
echo "$acronis_ports" | while read -r addr process; do
port=$(echo "$addr" | grep -oP ':\K[0-9]+$')
if echo "$addr" | grep -q "127.0.0.1\|::1"; then
# Local-only port
if [ "$port" = "9850" ]; then
echo -e " ${GREEN}${NC} Port $port (localhost) - MMS Service"
else
echo -e " ${GREEN}${NC} Port $port (localhost) - $(basename "$process" | cut -d/ -f2)"
fi
else
echo -e " ${GREEN}${NC} Port $port - $(basename "$process" | cut -d/ -f2)"
fi
done
else
echo -e " ${YELLOW}${NC} No Acronis ports detected"
fi
echo ""
# Check outbound connectivity to cloud (port 443)
if command -v curl >/dev/null 2>&1; then
reg_url=$(grep -oP '<address>\K[^<]+' /var/lib/Acronis/BackupAndRecovery/MMS/user.config 2>/dev/null)
if [ -n "$reg_url" ]; then
echo -n "Testing cloud connectivity... "
if timeout 5 curl -s -o /dev/null -w "%{http_code}" "$reg_url" 2>/dev/null | grep -q "^[2-4]"; then
echo -e "${GREEN}${NC} Connected"
else
echo -e "${YELLOW}${NC} Cannot reach cloud (may be firewall/network issue)"
fi
fi
fi
echo ""
# Check cloud storage quota
echo -e "${BOLD}Cloud Backup Storage:${NC}"
if command -v acrocmd >/dev/null 2>&1; then
vault_info=$(acrocmd list vaults 2>/dev/null | tail -n +3 | head -1)
if [ -n "$vault_info" ]; then
# Extract storage info from vault output
vault_name=$(echo "$vault_info" | awk '{print $1}')
vault_free=$(echo "$vault_info" | awk '{print $4, $5}')
vault_occupied=$(echo "$vault_info" | awk '{print $6, $7}')
echo -e " Vault: ${vault_name}"
echo -e " Used: ${vault_occupied}"
echo -e " Available: ${vault_free}"
else
echo -e " ${YELLOW}${NC} No vault information available"
echo -e " ${DIM}(Cloud storage visible after first backup)${NC}"
fi
else
echo -e " ${YELLOW}${NC} acrocmd not available"
fi
echo ""
# Check local disk space
echo -e "${BOLD}Local Storage Status:${NC}"
if [ -d "/var/lib/Acronis" ]; then
backup_dir_size=$(du -sh /var/lib/Acronis 2>/dev/null | awk '{print $1}')
echo -e " Agent data: ${backup_dir_size} (local cache/logs/config)"
# Check free space on partition
free_space=$(df -h /var/lib/Acronis | tail -1 | awk '{print $4}')
use_percent=$(df -h /var/lib/Acronis | tail -1 | awk '{print $5}' | tr -d '%')
echo -e " Free space: ${free_space} (on root partition)"
if [ -n "$use_percent" ] && [ "$use_percent" -gt 90 ] 2>/dev/null; then
echo -e " ${RED}⚠ Warning: Disk usage at ${use_percent}%${NC}"
fi
fi
echo ""
# Quick Actions
echo -e "${BOLD}Quick Actions:${NC}"
echo ""
echo -e " ${CYAN}1)${NC} Start All Services"
echo -e " ${CYAN}2)${NC} Stop All Services"
echo -e " ${CYAN}3)${NC} Restart All Services"
echo -e " ${CYAN}4)${NC} View Live Logs"
echo -e " ${CYAN}5)${NC} Check Agent Version"
echo ""
echo -e " ${RED}0)${NC} Return to Menu"
echo ""
echo -n "Select action (or press Enter to return): "
read -r action
case "$action" in
1)
echo ""
echo "Starting all Acronis services..."
systemctl start aakore
systemctl start acronis_mms
systemctl start acronis_schedule
systemctl start active-protection
echo ""
print_success "Services started"
sleep 2
exec "$0"
;;
2)
echo ""
echo "Stopping all Acronis services..."
systemctl stop active-protection
systemctl stop acronis_schedule
systemctl stop acronis_mms
systemctl stop aakore
echo ""
print_success "Services stopped"
sleep 2
exec "$0"
;;
3)
echo ""
echo "Restarting all Acronis services..."
systemctl restart aakore
systemctl restart acronis_mms
systemctl restart acronis_schedule
systemctl restart active-protection
echo ""
print_success "Services restarted"
sleep 2
exec "$0"
;;
4)
if [ -f "/var/lib/Acronis/BackupAndRecovery/MMS/mms.0.log" ]; then
echo ""
echo "Showing live log (Ctrl+C to exit)..."
sleep 1
tail -f /var/lib/Acronis/BackupAndRecovery/MMS/mms.0.log
else
print_error "Log file not found"
press_enter
fi
;;
5)
echo ""
echo -e "${BOLD}Agent Version Information:${NC}"
if command -v /usr/lib/Acronis/BackupAndRecovery/aakore &>/dev/null; then
/usr/lib/Acronis/BackupAndRecovery/aakore --version 2>/dev/null || echo "Version info not available"
else
echo "Agent binary not found"
fi
echo ""
press_enter
;;
*)
# Return to menu
exit 0
;;
esac