diff --git a/panel/team_footprint.sh b/panel/team_footprint.sh new file mode 100644 index 0000000..7cc03ef --- /dev/null +++ b/panel/team_footprint.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# Team footprint snapshot: everything a team owns, so a delete can be proven +# rather than assumed. Usage: ./team_footprint.sh [label] +set -uo pipefail +IDX=${1:-5} +LABEL=${2:-team$IDX} +echo "=== $LABEL ($IDX) ===" +echo " containers : $(docker ps --format '{{.Names}}' | grep -c "_container_team${IDX}\$")" +echo " sidecars : $(docker ps --format '{{.Names}}' | grep -c "team${IDX}-.*-1\$")" +echo " network : $(docker network ls --format '{{.Name}}' | grep -c "^team${IDX}_default\$")" +echo " volumes : $(docker volume ls --format '{{.Name}}' | grep -c "^team${IDX}")" +echo " dir : $([ -d "/opt/gemastik18-final/teams/team${IDX}" ] && echo present || echo GONE)" +echo " recv unit : $(systemctl is-active "gemastik-receiver-team${IDX}.service" 2>/dev/null || echo GONE)" +echo " ufw rules : $(ufw status | grep -cE " 3${IDX}0[0-9]{2}/tcp| 3${IDX}[1-9][0-9]{2}/tcp")" +echo " traefik : $(grep -c "team${IDX}" /data/coolify/proxy/dynamic/attackdefense-teams.yaml 2>/dev/null || echo 0)" diff --git a/panel/team_health.sh b/panel/team_health.sh new file mode 100644 index 0000000..823c958 --- /dev/null +++ b/panel/team_health.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Health of every real team: container count, receiver unit, disk. +set -uo pipefail +cd /opt/gemastik18-final +for i in 1 2 3 4; do + printf "team%s: %2s containers | receiver=%s | team dir=%s\n" "$i" \ + "$(docker ps --format '{{.Names}}' | grep -c "_container_team${i}\$")" \ + "$(systemctl is-active "gemastik-receiver-team${i}.service")" \ + "$([ -d "teams/team${i}" ] && echo ok || echo MISSING)" +done +echo "panel: $(systemctl is-active gemastik-panel)" +df -h / | tail -1