initial COM2 system snapshot
This commit is contained in:
196
tools/hxki_inventory_universal_v1.sh
Executable file
196
tools/hxki_inventory_universal_v1.sh
Executable file
@@ -0,0 +1,196 @@
|
||||
#!/bin/bash
|
||||
# ==========================================
|
||||
# HX-KI INVENTORY SCANNER – UNIVERSAL V1
|
||||
# Läuft auf jedem HX-KI Server (Helsinki / Nürnberg / Falkenstein)
|
||||
# ==========================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
TIMESTAMP_UTC="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
|
||||
HOSTNAME="$(hostname)"
|
||||
OUT_DIR="/opt/hx-ki/inventory"
|
||||
RUN_ID="$(date +"%Y%m%d-%H%M%S")"
|
||||
OUT_FILE="${OUT_DIR}/hxki_inventory_${HOSTNAME}_${RUN_ID}.log"
|
||||
|
||||
mkdir -p "${OUT_DIR}"
|
||||
|
||||
# Alles in Datei + Konsole schreiben
|
||||
exec > >(tee "${OUT_FILE}") 2>&1
|
||||
|
||||
echo "HX-KI INVENTAR – ${HOSTNAME}"
|
||||
echo "========================================================"
|
||||
echo "Timestamp (UTC): ${TIMESTAMP_UTC}"
|
||||
echo
|
||||
|
||||
section() {
|
||||
echo
|
||||
echo "---- $1 ----"
|
||||
}
|
||||
|
||||
# -------------------------------
|
||||
# SERVER INFORMATION
|
||||
# -------------------------------
|
||||
section "SERVER INFORMATION"
|
||||
|
||||
if command -v hostnamectl >/dev/null 2>&1; then
|
||||
hostnamectl
|
||||
else
|
||||
echo "Hostname: ${HOSTNAME}"
|
||||
echo "Kernel: $(uname -srmo)"
|
||||
if [ -f /etc/os-release ]; then
|
||||
echo
|
||||
echo "/etc/os-release:"
|
||||
cat /etc/os-release
|
||||
fi
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# CPU / RAM
|
||||
# -------------------------------
|
||||
section "CPU"
|
||||
|
||||
if command -v lscpu >/dev/null 2>&1; then
|
||||
lscpu | egrep 'Model name|CPU\(s\)|Thread|Core|Socket|MHz' || lscpu
|
||||
else
|
||||
echo "lscpu nicht gefunden."
|
||||
echo "uname -m: $(uname -m)"
|
||||
fi
|
||||
|
||||
section "RAM"
|
||||
|
||||
if command -v free >/dev/null 2>&1; then
|
||||
free -h
|
||||
else
|
||||
echo "free nicht gefunden."
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# STORAGE
|
||||
# -------------------------------
|
||||
section "STORAGE"
|
||||
|
||||
df -h /
|
||||
|
||||
# -------------------------------
|
||||
# DOCKER – GENERAL STATUS
|
||||
# -------------------------------
|
||||
section "DOCKER – GENERAL STATUS"
|
||||
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker Version:"
|
||||
docker version || echo "Docker Version konnte nicht abgefragt werden."
|
||||
|
||||
echo
|
||||
echo "Docker Compose Version:"
|
||||
if command -v docker compose >/dev/null 2>&1; then
|
||||
docker compose version || echo "docker compose version fehlgeschlagen."
|
||||
elif command -v docker-compose >/dev/null 2>&1; then
|
||||
docker-compose version || echo "docker-compose version fehlgeschlagen."
|
||||
else
|
||||
echo "Keine docker compose / docker-compose Binary gefunden."
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Docker Container (running):"
|
||||
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" || echo "docker ps fehlgeschlagen."
|
||||
|
||||
echo
|
||||
echo "Docker Container (all):"
|
||||
docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" || echo "docker ps -a fehlgeschlagen."
|
||||
|
||||
echo
|
||||
echo "Docker Networks:"
|
||||
docker network ls || echo "docker network ls fehlgeschlagen."
|
||||
|
||||
echo
|
||||
echo "Docker Volumes:"
|
||||
docker volume ls || echo "docker volume ls fehlgeschlagen."
|
||||
|
||||
else
|
||||
echo "Docker ist nicht installiert oder nicht im PATH."
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# DOCKER COMPOSE STACKS /opt/hx-ki/docker
|
||||
# -------------------------------
|
||||
section "DOCKER COMPOSE STACKS (/opt/hx-ki/docker)"
|
||||
|
||||
if [ -d /opt/hx-ki/docker ]; then
|
||||
for STACK_DIR in /opt/hx-ki/docker/*; do
|
||||
if [ -d "${STACK_DIR}" ] && [ -f "${STACK_DIR}/docker-compose.yml" ]; then
|
||||
STACK_NAME="$(basename "${STACK_DIR}")"
|
||||
echo
|
||||
echo "== Stack: ${STACK_NAME} =="
|
||||
echo "Pfad: ${STACK_DIR}"
|
||||
|
||||
# Versuche docker compose, fallback auf docker-compose
|
||||
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
|
||||
(
|
||||
cd "${STACK_DIR}"
|
||||
echo "Services (docker compose config --services):"
|
||||
docker compose config --services 2>/dev/null || echo "docker compose config fehlgeschlagen."
|
||||
)
|
||||
elif command -v docker-compose >/dev/null 2>&1; then
|
||||
(
|
||||
cd "${STACK_DIR}"
|
||||
echo "Services (docker-compose config --services):"
|
||||
docker-compose config --services 2>/dev/null || echo "docker-compose config fehlgeschlagen."
|
||||
)
|
||||
else
|
||||
echo "Keine docker compose / docker-compose Binary verfügbar."
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "/opt/hx-ki/docker existiert nicht auf diesem Server."
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# /opt/hx-ki – DIRECTORY STRUCTURE
|
||||
# -------------------------------
|
||||
section "/opt/hx-ki – DIRECTORY STRUCTURE (max depth 2)"
|
||||
|
||||
if [ -d /opt/hx-ki ]; then
|
||||
if command -v tree >/dev/null 2>&1; then
|
||||
tree -L 2 /opt/hx-ki
|
||||
else
|
||||
echo "tree nicht installiert – verwende find:"
|
||||
find /opt/hx-ki -maxdepth 2 -mindepth 1 -type d | sort
|
||||
fi
|
||||
else
|
||||
echo "/opt/hx-ki existiert nicht auf diesem Server."
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# PYTHON ENVS UNTER /opt/hx-ki
|
||||
# -------------------------------
|
||||
section "PYTHON ENVS UNTER /opt/hx-ki"
|
||||
|
||||
for VENV in /opt/hx-ki/env /opt/hx-ki/venv; do
|
||||
if [ -d "${VENV}" ]; then
|
||||
echo
|
||||
echo "Virtualenv: ${VENV}"
|
||||
if [ -x "${VENV}/bin/python" ]; then
|
||||
"${VENV}/bin/python" --version 2>&1 || true
|
||||
fi
|
||||
if [ -x "${VENV}/bin/pip" ]; then
|
||||
echo "Installierte Pakete (Top 40):"
|
||||
"${VENV}/bin/pip" list 2>/dev/null | head -n 40 || true
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# -------------------------------
|
||||
# SYSTEM PYTHON
|
||||
# -------------------------------
|
||||
section "SYSTEM PYTHON"
|
||||
|
||||
if command -v python3 >/dev/null 2>&1; then
|
||||
echo "python3 Version:"
|
||||
python3 --version 2>&1 || true
|
||||
else
|
||||
echo "python3 nicht gefunden."
|
||||
fi
|
||||
|
||||
section "FERTIG"
|
||||
echo "Inventar-Datei: ${OUT_FILE}"
|
||||
Reference in New Issue
Block a user