142 lines
4.3 KiB
Bash
142 lines
4.3 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Complete Review of All LXC Containers on r630-02 and Services
|
||
|
|
# Host: 192.168.11.12 (r630-02)
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.12}"
|
||
|
|
|
||
|
|
# Colors
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
BLUE='\033[0;34m'
|
||
|
|
CYAN='\033[0;36m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||
|
|
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||
|
|
log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; }
|
||
|
|
log_error() { echo -e "${RED}[✗]${NC} $1"; }
|
||
|
|
log_section() { echo -e "${CYAN}════════════════════════════════════════${NC}"; }
|
||
|
|
|
||
|
|
echo "=========================================="
|
||
|
|
echo "Complete LXC Containers Review - r630-02"
|
||
|
|
echo "Host: $PROXMOX_HOST"
|
||
|
|
echo "=========================================="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Function to execute command in container
|
||
|
|
exec_container() {
|
||
|
|
local vmid=$1
|
||
|
|
shift
|
||
|
|
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=3 root@"$PROXMOX_HOST" "pct exec $vmid -- bash -c '$*'" 2>&1 || echo "COMMAND_FAILED"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Get container list
|
||
|
|
CONTAINER_LIST=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" "pct list" 2>&1)
|
||
|
|
CONTAINERS=$(echo "$CONTAINER_LIST" | awk 'NR>1 {print $1}')
|
||
|
|
|
||
|
|
TOTAL_COUNT=$(echo "$CONTAINERS" | wc -l)
|
||
|
|
RUNNING_COUNT=$(echo "$CONTAINER_LIST" | awk 'NR>1 && $2=="running" {count++} END {print count+0}')
|
||
|
|
|
||
|
|
log_success "Found $TOTAL_COUNT containers ($RUNNING_COUNT running)"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Process each container
|
||
|
|
for VMID in $CONTAINERS; do
|
||
|
|
if [ -z "$VMID" ]; then
|
||
|
|
continue
|
||
|
|
fi
|
||
|
|
|
||
|
|
log_section
|
||
|
|
log_info "Container VMID: $VMID"
|
||
|
|
|
||
|
|
CONTAINER_INFO=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" "pct list | grep '^$VMID'" 2>&1)
|
||
|
|
if [ -z "$CONTAINER_INFO" ]; then
|
||
|
|
log_warn "Could not get info for VMID $VMID"
|
||
|
|
continue
|
||
|
|
fi
|
||
|
|
|
||
|
|
STATUS=$(echo "$CONTAINER_INFO" | awk '{print $2}')
|
||
|
|
NAME=$(echo "$CONTAINER_INFO" | awk '{print $3}')
|
||
|
|
|
||
|
|
echo " Name: $NAME"
|
||
|
|
echo " Status: $STATUS"
|
||
|
|
|
||
|
|
if [ "$STATUS" != "running" ]; then
|
||
|
|
log_warn "Container is not running, skipping service check"
|
||
|
|
echo ""
|
||
|
|
continue
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Get IP
|
||
|
|
IP=$(exec_container "$VMID" "hostname -I 2>/dev/null | awk '{print \$1}'" 2>&1 | head -1)
|
||
|
|
if [ -n "$IP" ] && [ "$IP" != "COMMAND_FAILED" ]; then
|
||
|
|
echo " IP: $IP"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Check services
|
||
|
|
echo ""
|
||
|
|
log_info " System Services:"
|
||
|
|
|
||
|
|
# Check common services based on container name
|
||
|
|
case "$NAME" in
|
||
|
|
*blockscout*)
|
||
|
|
SERVICES="nginx docker blockscout postgresql"
|
||
|
|
;;
|
||
|
|
*firefly*)
|
||
|
|
SERVICES="docker"
|
||
|
|
;;
|
||
|
|
*gitea*)
|
||
|
|
SERVICES="gitea"
|
||
|
|
;;
|
||
|
|
*cloudflared*)
|
||
|
|
SERVICES="cloudflared"
|
||
|
|
;;
|
||
|
|
*omada*)
|
||
|
|
SERVICES=""
|
||
|
|
;;
|
||
|
|
*nginx*)
|
||
|
|
SERVICES="nginx"
|
||
|
|
;;
|
||
|
|
*monitoring*)
|
||
|
|
SERVICES="docker"
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
SERVICES="nginx apache2 docker postgresql mysql mariadb redis"
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
for SERVICE in $SERVICES; do
|
||
|
|
SERVICE_STATUS=$(exec_container "$VMID" "systemctl is-active $SERVICE 2>/dev/null || echo 'inactive'" 2>&1)
|
||
|
|
if [ "$SERVICE_STATUS" = "active" ]; then
|
||
|
|
echo " ✓ $SERVICE: active"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
# Check Docker containers if Docker is available
|
||
|
|
DOCKER_CHECK=$(exec_container "$VMID" "command -v docker >/dev/null 2>&1 && echo 'yes' || echo 'no'" 2>&1)
|
||
|
|
if echo "$DOCKER_CHECK" | grep -q "yes"; then
|
||
|
|
echo ""
|
||
|
|
log_info " Docker Containers:"
|
||
|
|
DOCKER_PS=$(exec_container "$VMID" "docker ps --format '{{.Names}} - {{.Status}}' 2>&1" | head -5)
|
||
|
|
if [ -n "$DOCKER_PS" ] && ! echo "$DOCKER_PS" | grep -q "COMMAND_FAILED"; then
|
||
|
|
echo "$DOCKER_PS" | while read line; do echo " $line"; done
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Check disk usage
|
||
|
|
DISK_USAGE=$(exec_container "$VMID" "df -h / 2>/dev/null | tail -1 | awk '{print \$5 \" (\" \$3 \"/\" \$2 \")\"}'" 2>&1)
|
||
|
|
if [ -n "$DISK_USAGE" ] && ! echo "$DISK_USAGE" | grep -q "COMMAND_FAILED"; then
|
||
|
|
echo ""
|
||
|
|
log_info " Disk Usage:"
|
||
|
|
echo " $DISK_USAGE"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
done
|
||
|
|
|
||
|
|
log_section
|
||
|
|
log_success "Review Complete - Processed $TOTAL_COUNT containers"
|