Lab_AD_Complet/scripts/check-prereqs.sh
Corentin 8e1b06e090 Initial lab release: Docker-based Active Directory lab
Complete Active Directory teaching environment based on dockurr/windows:
- Windows Server domain controller, Windows 11 client, Debian 12 client
- docker-compose orchestration, env-driven configuration
- Bilingual documentation (FR + EN) for students
- Dual approach (GUI + PowerShell) in every procedure
- Instructor course plan and reference scripts
- RDP launcher scripts for Linux, macOS and Windows

Made by AcadéNice - https://acadenice.fr/
2026-04-17 11:29:49 +02:00

78 lines
2.5 KiB
Bash
Executable file

#!/usr/bin/env bash
# Vérifie les prérequis locaux avant de lancer le lab.
# Fait par AcadéNice - https://acadenice.fr/
set -u
ok() { echo "[ OK ] $*"; }
ko() { echo "[FAIL] $*"; fail=1; }
warn() { echo "[WARN] $*"; }
fail=0
OS="$(uname -s)"
echo "Vérification des prérequis (OS détecté : $OS)"
echo
command -v docker >/dev/null 2>&1 \
&& ok "docker : $(docker --version 2>/dev/null | awk '{print $3}' | tr -d ',')" \
|| ko "docker absent"
docker compose version >/dev/null 2>&1 \
&& ok "docker compose v2 : $(docker compose version --short 2>/dev/null)" \
|| ko "docker compose v2 absent (plugin docker-compose-plugin requis)"
docker info >/dev/null 2>&1 \
&& ok "daemon docker joignable" \
|| ko "daemon docker inaccessible (user dans le groupe docker ?)"
case "$OS" in
Linux)
if [ -e /dev/kvm ] && [ -r /dev/kvm ] && [ -w /dev/kvm ]; then
ok "/dev/kvm accessible"
elif [ -e /dev/kvm ]; then
ko "/dev/kvm existe mais pas lisible (groupe kvm ?)"
else
ko "/dev/kvm absent (VT-x / AMD-V désactivé dans le BIOS ?)"
fi
lsmod 2>/dev/null | grep -q "^kvm " && ok "module kvm chargé" || warn "module kvm non chargé"
;;
Darwin)
if [ "$(uname -m)" = "arm64" ]; then
ko "Mac Apple Silicon : dockurr/windows non supporté (voir docs/etudiant/fr/00-prerequis.md)"
else
warn "Mac Intel : Docker Desktop avec virtualisation imbriquée requis"
fi
;;
MINGW*|CYGWIN*|MSYS*)
warn "Sous Windows, utilisez plutôt check-prereqs.ps1"
;;
esac
if command -v free >/dev/null 2>&1; then
MEM_GB=$(free -g | awk '/^Mem:/ {print $2}')
if [ "$MEM_GB" -ge 16 ]; then ok "RAM ${MEM_GB} Go"
elif [ "$MEM_GB" -ge 12 ]; then warn "RAM ${MEM_GB} Go (minimum — fermez les autres applis)"
else ko "RAM ${MEM_GB} Go insuffisante"
fi
fi
FREE_GB=$(df -BG "$PWD" 2>/dev/null | awk 'NR==2 {gsub("G",""); print $4}')
if [ -n "${FREE_GB:-}" ]; then
if [ "$FREE_GB" -ge 150 ]; then ok "Disque libre ${FREE_GB} Go"
elif [ "$FREE_GB" -ge 80 ]; then warn "Disque libre ${FREE_GB} Go (juste le minimum)"
else ko "Disque libre ${FREE_GB} Go insuffisant"
fi
fi
command -v xfreerdp3 >/dev/null 2>&1 || command -v xfreerdp >/dev/null 2>&1 \
&& ok "xfreerdp disponible" \
|| warn "xfreerdp absent (recommandé pour RDP fluide)"
echo
if [ $fail -eq 0 ]; then
echo "Prérequis critiques : OK."
exit 0
fi
echo "Prérequis manquants. Voir docs/etudiant/fr/00-prerequis.md"
exit 1