#!/bin/bash # =================================================================== # MYP Kiosk-Setup Test und Validierung # Testet alle Komponenten der Kiosk-Installation # =================================================================== set -e # Farben für Ausgabe RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Test-Funktionen test_passed() { echo -e "${GREEN}✅ $1${NC}" } test_failed() { echo -e "${RED}❌ $1${NC}" } test_warning() { echo -e "${YELLOW}⚠️ $1${NC}" } test_info() { echo -e "${BLUE}ℹ️ $1${NC}" } echo "=====================================================================" echo "🧪 MYP Kiosk-Setup Validierung" echo "=====================================================================" echo # ========================== SYSTEM-TESTS ========================== echo "🔍 SYSTEM-TESTS" echo "---------------------------------------------------------------------" # Benutzer-Tests if id "kiosk" &>/dev/null; then test_passed "Kiosk-Benutzer existiert" else test_failed "Kiosk-Benutzer fehlt" fi if id "myp" &>/dev/null; then test_passed "MYP-Benutzer existiert" else test_failed "MYP-Benutzer fehlt" fi # Verzeichnis-Tests if [ -d "/opt/myp-druckerverwaltung" ]; then test_passed "MYP-Anwendungsverzeichnis existiert" else test_failed "MYP-Anwendungsverzeichnis fehlt" fi if [ -f "/opt/myp-druckerverwaltung/app.py" ]; then test_passed "Flask-Anwendung gefunden" else test_warning "Flask-Anwendung nicht gefunden (wird erstellt)" fi # ========================== SERVICE-TESTS ========================== echo echo "🔧 SERVICE-TESTS" echo "---------------------------------------------------------------------" # Systemd-Services prüfen services=("myp-druckerverwaltung" "lightdm" "kiosk-chromium") for service in "${services[@]}"; do if systemctl is-enabled --quiet "$service" 2>/dev/null; then test_passed "Service '$service' ist aktiviert" if systemctl is-active --quiet "$service" 2>/dev/null; then test_passed "Service '$service' läuft" else test_warning "Service '$service' läuft nicht (normal vor Reboot)" fi else test_failed "Service '$service' ist nicht aktiviert" fi done # ========================== KONFIGURATION-TESTS ========================== echo echo "⚙️ KONFIGURATION-TESTS" echo "---------------------------------------------------------------------" # LightDM-Konfiguration if [ -f "/etc/lightdm/lightdm.conf" ]; then if grep -q "autologin-user=kiosk" /etc/lightdm/lightdm.conf; then test_passed "LightDM Autologin konfiguriert" else test_failed "LightDM Autologin nicht konfiguriert" fi else test_failed "LightDM-Konfiguration fehlt" fi # Kiosk-Skript if [ -f "/home/kiosk/start-kiosk.sh" ]; then if [ -x "/home/kiosk/start-kiosk.sh" ]; then test_passed "Kiosk-Starter-Skript vorhanden und ausführbar" else test_failed "Kiosk-Starter-Skript nicht ausführbar" fi else test_failed "Kiosk-Starter-Skript fehlt" fi # Openbox-Konfiguration if [ -f "/home/kiosk/.config/openbox/rc.xml" ]; then test_passed "Openbox-Konfiguration vorhanden" else test_failed "Openbox-Konfiguration fehlt" fi # Desktop-Autostart if [ -f "/home/kiosk/.config/autostart/myp-kiosk.desktop" ]; then test_passed "Desktop-Autostart konfiguriert" else test_failed "Desktop-Autostart fehlt" fi # ========================== PAKET-TESTS ========================== echo echo "📦 PAKET-TESTS" echo "---------------------------------------------------------------------" # Wichtige Pakete prüfen packages=("chromium" "openbox" "lightdm" "python3" "unclutter" "xorg") for package in "${packages[@]}"; do if dpkg -l | grep -q "^ii.*$package" 2>/dev/null; then test_passed "Paket '$package' installiert" elif command -v "$package" &>/dev/null; then test_passed "Programm '$package' verfügbar" else test_failed "Paket/Programm '$package' fehlt" fi done # Chromium-Binary finden if command -v chromium &>/dev/null; then test_passed "Chromium-Binary gefunden: $(which chromium)" elif command -v chromium-browser &>/dev/null; then test_passed "Chromium-Browser-Binary gefunden: $(which chromium-browser)" else test_failed "Kein Chromium-Binary gefunden" fi # ========================== NETZWERK-TESTS ========================== echo echo "🌐 NETZWERK-TESTS" echo "---------------------------------------------------------------------" # Internetverbindung if ping -c 1 google.com &>/dev/null; then test_passed "Internetverbindung verfügbar" else test_warning "Keine Internetverbindung (optional)" fi # Lokale Ports testen (falls Services laufen) if systemctl is-active --quiet myp-druckerverwaltung 2>/dev/null; then if curl -s --connect-timeout 5 http://localhost:5000 >/dev/null 2>&1; then test_passed "Port 5000 erreichbar" else test_warning "Port 5000 nicht erreichbar" fi if curl -s --connect-timeout 5 http://localhost:8080 >/dev/null 2>&1; then test_passed "Port 8080 erreichbar" else test_info "Port 8080 nicht verfügbar (optional)" fi else test_info "Backend-Service nicht aktiv - Port-Tests übersprungen" fi # ========================== RASPBERRY PI TESTS ========================== echo echo "🍓 RASPBERRY PI TESTS" echo "---------------------------------------------------------------------" if grep -q "Raspberry Pi" /proc/cpuinfo 2>/dev/null; then test_passed "Raspberry Pi erkannt" # Boot-Konfiguration prüfen if [ -f "/boot/config.txt" ]; then if grep -q "gpu_mem=" /boot/config.txt; then GPU_MEM=$(grep "gpu_mem=" /boot/config.txt | cut -d= -f2) test_passed "GPU Memory Split konfiguriert: ${GPU_MEM}MB" else test_warning "GPU Memory Split nicht konfiguriert" fi if grep -q "disable_splash=1" /boot/config.txt; then test_passed "Boot-Splash deaktiviert" else test_warning "Boot-Splash nicht deaktiviert" fi else test_warning "/boot/config.txt nicht gefunden" fi # Temperatur prüfen if command -v vcgencmd &>/dev/null; then TEMP=$(vcgencmd measure_temp 2>/dev/null | cut -d= -f2 | cut -d"'" -f1) if [ -n "$TEMP" ]; then test_passed "CPU Temperatur: ${TEMP}°C" if (( $(echo "$TEMP > 70" | bc -l 2>/dev/null || echo 0) )); then test_warning "Hohe CPU Temperatur: ${TEMP}°C" fi fi fi else test_info "Kein Raspberry Pi - Pi-spezifische Tests übersprungen" fi # ========================== WARTUNGSTOOLS-TESTS ========================== echo echo "🔧 WARTUNGSTOOLS-TESTS" echo "---------------------------------------------------------------------" if [ -f "/usr/local/bin/myp-maintenance" ]; then if [ -x "/usr/local/bin/myp-maintenance" ]; then test_passed "Wartungstool verfügbar" else test_failed "Wartungstool nicht ausführbar" fi else test_failed "Wartungstool fehlt" fi # Log-Verzeichnisse if [ -f "/var/log/kiosk-session.log" ]; then test_passed "Kiosk-Session-Log verfügbar" else test_warning "Kiosk-Session-Log nicht vorhanden" fi # ========================== ZUSAMMENFASSUNG ========================== echo echo "=====================================================================" echo "📊 TEST-ZUSAMMENFASSUNG" echo "=====================================================================" # Zähle Tests TOTAL_TESTS=$(grep -E "(test_passed|test_failed|test_warning)" "$0" | wc -l) echo "Gesamte Tests durchgeführt: $TOTAL_TESTS" echo echo "🎯 NÄCHSTE SCHRITTE:" echo "---------------------------------------------------------------------" if systemctl is-active --quiet lightdm 2>/dev/null; then echo "✅ System ist bereits im Kiosk-Modus" echo " - Kiosk läuft bereits" echo " - Verwenden Sie 'sudo myp-maintenance status' für Details" else echo "🔄 System-Neustart erforderlich:" echo " sudo reboot" echo echo "📋 Nach dem Neustart:" echo " - System startet automatisch ohne Login" echo " - Chromium öffnet im Kiosk-Modus" echo " - Anwendung ist unter http://localhost:5000 oder :8080 verfügbar" fi echo echo "🔧 WARTUNG:" echo " sudo myp-maintenance status # System-Status" echo " sudo myp-maintenance logs # Live-Logs" echo " sudo myp-maintenance restart # Services neustarten" echo echo "📋 LOG-DATEIEN:" echo " tail -f /var/log/kiosk-session.log" echo " journalctl -u myp-druckerverwaltung -f" echo " journalctl -u lightdm -f" echo echo "=====================================================================" echo "🏁 Test abgeschlossen" echo "====================================================================="