2
servercheck
ManfredAabye edited this page 2025-04-30 10:00:51 +02:00

Anleitung: servercheck() Funktion

Beschreibung

Diese Funktion überprüft die Server-Kompatibilität für .NET-Anwendungen und installiert fehlende Abhängigkeiten.

Unterstützte Distributionen

Direkt kompatible Distributionen

  • Debian 11+ (Bullseye, Bookworm)
  • Debian 12
  • Ubuntu 18.04, 20.04, 22.04, 24.04
  • Linux Mint (basierend auf Ubuntu 20.04 oder 22.04)
  • Pop!_OS (basierend auf Ubuntu)
  • MX Linux (Debian-basiert)
  • Arch Linux
  • Manjaro

Mögliche kompatible Distributionen (mit Anpassungen)

  • Kali Linux
  • Zorin OS
  • elementary OS
  • Raspberry Pi OS

Funktionsweise

1️⃣ Systemerkennung

Die Funktion ermittelt das Betriebssystem und die Version automatisch:

os_id=$(grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"')
os_version=$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '"')

2️⃣ .NET-Version Bestimmung

Die Funktion wählt die passende .NET-Version basierend auf der erkannten Distribution:

Distribution Version .NET Version
Ubuntu/Linux Mint 24.04 dotnet-sdk-8.0
Ubuntu/Linux Mint 22.04 dotnet-sdk-8.0
Ubuntu/Linux Mint 20.04 dotnet-sdk-8.0
Ubuntu/Linux Mint 18.04 dotnet-sdk-6.0
Debian ≥11 dotnet-sdk-8.0
Debian 12 dotnet-sdk-8.0
Arch/Manjaro - dotnet-sdk-8.0

Falls eine nicht unterstützte Version erkannt wird, gibt die Funktion 1 zurück.

3️⃣ .NET Installation

Je nach Paketmanager wird .NET installiert:

  • Für Arch/Manjaro:

    pacman -S --noconfirm dotnet-sdk-8.0
    
  • Für Debian-basierte Systeme:

    apt-get install -y dotnet-sdk-8.0
    

4️⃣ Abhängigkeiten Installation

Die folgenden Pakete werden überprüft und ggf. installiert:

libc6 libgcc-s1 libgssapi-krb5-2 libicu70 liblttng-ust1 
libssl3 libstdc++6 libunwind8 zlib1g libgdiplus zip screen

Falls Pakete nicht gefunden werden, gibt das Skript eine Warnung aus:

for package in "${pkg_list[@]}"; do
    if ! dpkg -s "$package" >/dev/null 2>&1; then
        echo -e "${SYM_OK} ${COLOR_ACTION}Versuche ${COLOR_SERVER}$package${COLOR_RESET} zu installieren..."
        if ! sudo apt-get install -y "$package"; then
            echo -e "${SYM_BAD} ${COLOR_WARNING}Fehler bei der Installation von $package! Bitte manuell überprüfen.${COLOR_RESET}"
        fi
    fi
done

5️⃣ Fehlerbehandlung & Logging

Falls das Skript auf einem Produktionsserver läuft, kann eine Logging-Funktion hilfreich sein:

LOGFILE="/var/log/servercheck.log"

log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOGFILE"
}

log_message "Servercheck gestartet..."

for package in "${pkg_list[@]}"; do
    if ! dpkg -s "$package" >/dev/null 2>&1; then
        log_message "Installiere Paket: $package"
        if ! sudo apt-get install -y "$package"; then
            log_message "❌ Fehler bei der Installation von $package"
        fi
    fi
done

log_message "Servercheck abgeschlossen."

Ausgabe

Die Funktion gibt farbige Statusmeldungen aus:

  • 🔍 Server-Kompatibilitätscheck wird durchgeführt...
  • 🔄 .NET Runtime-Überprüfung:
  • 📦 Überprüfe fehlende Pakete...
  • Erfolgsmeldungen bei Installationen
  • Fehlerwarnungen bei nicht gefundenen Paketen

Rückgabewerte

  • Erfolg: Kein Rückgabewert
  • Fehler: Gibt 1 zurück, wenn keine unterstützte Distribution gefunden wurde

Verwendung

Einfach die Funktion im Terminal aufrufen:

bash osmtool.sh servercheck

Voraussetzungen

  • Das Skript muss mit Root-Rechten oder sudo ausgeführt werden.
  • Farbvariablen müssen definiert sein (COLOR_HEADING, COLOR_RESET, etc.).
  • Symbole (SYM_OK, SYM_BAD) müssen definiert sein.
  • Die Funktion blankline muss verfügbar sein.

Hinweise

  • Für nicht direkt unterstützte Distributionen kann eine manuelle Installation erforderlich sein.
  • Falls ein Paket nicht verfügbar ist, kann eine alternative Version benötigt werden (z. B. libicu70libicu71).
  • Auf Ubuntu 18.04 wird nur .NET 6 unterstützt.