#!/usr/bin/env bash # Check memory limits for all containers on r630-02 # Usage: ./scripts/check-container-memory-limits.sh set -euo pipefail # Load IP configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true PROXMOX_HOST="${PROXMOX_HOST_R630_02}" # Colors CYAN='\033[0;36m' GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${CYAN}ℹ${NC} $1"; } log_success() { echo -e "${GREEN}✓${NC} $1"; } log_warn() { echo -e "${YELLOW}⚠${NC} $1"; } log_error() { echo -e "${RED}✗${NC} $1"; } echo "" echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo -e "${BLUE}Container Memory Limits Review - r630-02${NC}" echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo "" # Get all containers CONTAINER_VMIDS=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \ "pct list 2>/dev/null | tail -n +2 | awk '{print \$1}'" || echo "") if [ -z "$CONTAINER_VMIDS" ]; then log_warn "No containers found" exit 0 fi echo "VMID | Name | Memory Limit | Swap | Current Usage | Status" echo "-----|------|--------------|------|---------------|--------" for vmid in $CONTAINER_VMIDS; do # Get container info CONTAINER_INFO=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \ "pct list 2>/dev/null | grep \"^$vmid\" || echo \"\"" 2>/dev/null) if [ -z "$CONTAINER_INFO" ]; then continue fi name=$(echo "$CONTAINER_INFO" | awk '{print $3}') status=$(echo "$CONTAINER_INFO" | awk '{print $2}') # Get memory configuration MEMORY=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \ "pct config $vmid 2>/dev/null | grep '^memory:' | awk '{print \$2}'" 2>/dev/null || echo "N/A") SWAP=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \ "pct config $vmid 2>/dev/null | grep '^swap:' | awk '{print \$2}'" 2>/dev/null || echo "N/A") # Get current memory usage if running if [ "$status" = "running" ]; then CURRENT_USAGE=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \ "pct exec $vmid -- free -m 2>/dev/null | grep Mem | awk '{print \$3}'" 2>/dev/null || echo "N/A") else CURRENT_USAGE="N/A (stopped)" fi # Format memory values (memory is in bytes, convert to MB) if [ "$MEMORY" != "N/A" ] && [ -n "$MEMORY" ] && [ "$MEMORY" != "0" ]; then MEMORY_MB=$((MEMORY / 1024 / 1024)) MEMORY_DISPLAY="${MEMORY_MB}MB" else MEMORY_DISPLAY="Not set" fi if [ "$SWAP" != "N/A" ] && [ -n "$SWAP" ] && [ "$SWAP" != "0" ]; then SWAP_MB=$((SWAP / 1024 / 1024)) SWAP_DISPLAY="${SWAP_MB}MB" else SWAP_DISPLAY="Not set" fi if [ "$CURRENT_USAGE" != "N/A" ] && [ "$CURRENT_USAGE" != "N/A (stopped)" ]; then CURRENT_DISPLAY="${CURRENT_USAGE}MB" else CURRENT_DISPLAY="$CURRENT_USAGE" fi echo "$vmid | $name | $MEMORY_DISPLAY | $SWAP_DISPLAY | $CURRENT_DISPLAY | $status" done echo ""