From 02cf824a5572bd3c703942ceba15a9094c840789 Mon Sep 17 00:00:00 2001 From: "sebastian.zell" Date: Sun, 4 Jan 2026 11:48:35 +0000 Subject: [PATCH] client_install_programme_ubuntu.sh aktualisiert --- client_install_programme_ubuntu.sh | 239 +++++++++++++++++------------ 1 file changed, 144 insertions(+), 95 deletions(-) diff --git a/client_install_programme_ubuntu.sh b/client_install_programme_ubuntu.sh index 2a0f7fc..b8c5482 100644 --- a/client_install_programme_ubuntu.sh +++ b/client_install_programme_ubuntu.sh @@ -1,27 +1,24 @@ #!/bin/bash # ================================ -# Skript zur Konfiguration von Debian +# Skript zur Konfiguration von Ubuntu 24.04 (Noble) # ================================ -# Beschreibung: -# Dieses Skript aktualisiert die Quellenliste, fügt neue Repositorys hinzu, -# installiert notwendige Softwarepakete über APT und Flatpak, und installiert -# zusätzliche .deb-Pakete. -# Farben für farbige Terminalausgaben definieren +# Farben GREEN='\033[0;32m' RED='\033[0;31m' +YELLOW='\033[1;33m' NC='\033[0m' # Keine Farbe -# System aktualisieren -sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y +# ================================ +# KONFIGURATION & VARIABLEN +# ================================ -# Variablen -SOURCES_FILE="/etc/apt/sources.list" -NEW_CONTENT=$(cat < /dev/null + echo -e "${GREEN}System wird aktualisiert...${NC}" + + # Standard-Updates + sudo apt update && sudo apt upgrade -y + + echo -e "${GREEN}Füge ecoDMS Repository (Noble) hinzu...${NC}" + + # GPG Key holen + wget -qO - http://www.ecodms.de/gpg/ecodms.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/ecodms.gpg + + # Repo Datei erstellen + echo "$ECODMS_REPO" | sudo tee "$ECODMS_LIST" > /dev/null + if [[ $? -ne 0 ]]; then - echo -e "${RED}Fehler beim Aktualisieren der Quellenliste.${NC}" + echo -e "${RED}Fehler beim Hinzufügen des ecoDMS Repositories.${NC}" exit 1 fi - - echo -e "${GREEN}GPG-Schlüssel hinzufügen...${NC}" - wget -qO /etc/apt/trusted.gpg.d/ecodms.asc http://www.ecodms.de/gpg/ecodms.key || { - echo -e "${RED}Download des GPG-Schlüssels fehlgeschlagen.${NC}" - exit 1 - } + + sudo apt update } -# Funktion: System aktualisieren und Pakete installieren +# 2. APT Pakete installieren install_apt_packages() { - echo -e "${GREEN}System wird aktualisiert...${NC}" - sudo apt update && sudo apt upgrade -y || { - echo -e "${RED}Fehler bei Systemaktualisierung.${NC}" - exit 1 - } - echo -e "${GREEN}Installiere APT-Pakete...${NC}" for PACKAGE in "${APT_PACKAGES[@]}"; do - if sudo apt install -y "$PACKAGE"; then - echo -e "${GREEN}$PACKAGE erfolgreich installiert.${NC}" + # Check ob installiert + if dpkg -l | grep -q "^ii $PACKAGE "; then + echo -e "${GREEN}$PACKAGE ist bereits installiert.${NC}" else - echo -e "${RED}Fehler bei der Installation von $PACKAGE.${NC}" + sudo apt install -y "$PACKAGE" || echo -e "${RED}Fehler bei $PACKAGE (evtl. existiert es nur als Snap?).${NC}" fi done } -# Funktion: Snap installieren und Pakete einrichten +# 3. Snap Pakete installieren install_snap_packages() { + # Snap ist bei Ubuntu Standard, aber sicherheitshalber prüfen if ! command -v snap &> /dev/null; then echo -e "${GREEN}Snap wird installiert...${NC}" - sudo apt install -y snapd || { - echo -e "${RED}Fehler bei der Snap-Installation.${NC}" - exit 1 - } + sudo apt install -y snapd fi echo -e "${GREEN}Installiere Snap-Pakete...${NC}" for SNAP in "${SNAP_PACKAGES[@]}"; do - if sudo snap install "$SNAP" --classic; then - echo -e "${GREEN}$SNAP erfolgreich installiert.${NC}" - else - echo -e "${RED}Fehler bei der Installation von $SNAP.${NC}" - fi + sudo snap install "$SNAP" || sudo snap install "$SNAP" --classic done } -# Funktion: Flatpak installieren und Pakete einrichten +# 4. Flatpak installieren install_flatpak_packages() { if ! command -v flatpak &> /dev/null; then echo -e "${GREEN}Flatpak wird installiert...${NC}" - sudo apt install -y flatpak || { - echo -e "${RED}Fehler bei der Flatpak-Installation.${NC}" - exit 1 - } + sudo apt install -y flatpak sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo fi - - echo -e "${GREEN}Installiere Flatpak-Pakete...${NC}" - for PACKAGE in "${FLATPAK_PACKAGES[@]}"; do - if flatpak install -y flathub "$PACKAGE"; then - echo -e "${GREEN}$PACKAGE erfolgreich installiert.${NC}" - else - echo -e "${RED}Fehler bei der Installation von $PACKAGE.${NC}" - fi - done } -# Funktion: Zusätzliche .deb-Pakete herunterladen und installieren +# 5. DEB Pakete installieren install_deb_packages() { echo -e "${GREEN}Lade zusätzliche .deb-Pakete herunter...${NC}" mkdir -p "$DOWNLOAD_DIR" declare -A DEB_URLS=( ["shadow-amd64.deb"]="https://update.shadow.tech/launcher/prod/linux/x86_64/shadow-amd64.deb" - ["nomachine.deb"]="https://download.nomachine.com/download/8.14/Linux/nomachine_8.14.2_1_amd64.deb" + ["nomachine.deb"]="https://web9001.nomachine.com/download/9.3/Linux/nomachine_9.3.7_1_amd64.deb" ["xpipe.deb"]="https://github.com/xpipe-io/xpipe/releases/latest/download/xpipe-installer-linux-x86_64.deb" - ["rustdesk.deb"]="https://github.com/rustdesk/rustdesk/releases/download/1.3.6/rustdesk-1.3.6-x86_64.deb" + ["rustdesk.deb"]="https://github.com/rustdesk/rustdesk/releases/download/1.4.4/rustdesk-1.4.4-x86_64.deb" ) for FILE in "${!DEB_URLS[@]}"; do - wget -O "$DOWNLOAD_DIR/$FILE" "${DEB_URLS[$FILE]}" || { - echo -e "${RED}Fehler beim Herunterladen von $FILE.${NC}" - continue - } + wget -O "$DOWNLOAD_DIR/$FILE" "${DEB_URLS[$FILE]}" || echo -e "${RED}Fehler bei Download von $FILE.${NC}" done echo -e "${GREEN}Installiere .deb-Pakete...${NC}" for DEB_FILE in "$DOWNLOAD_DIR"/*.deb; do - if sudo apt install -y "$DEB_FILE"; then - echo -e "${GREEN}$DEB_FILE erfolgreich installiert.${NC}" - else - echo -e "${RED}Fehler bei der Installation von $DEB_FILE.${NC}" - fi + sudo apt install -y "$DEB_FILE" || sudo apt --fix-broken install -y done } -# Funktion: autofs einrichten -autofs() { - echo -e "${GREEN}Richte autofs ein...${NC}" - sudo apt install -y autofs || { - echo -e "${RED}Fehler bei der Installation von autofs.${NC}" - exit 1 - } - echo "/net /etc/auto.net --timeout=600" | sudo tee -a /etc/auto.master - systemctl restart autofs - systemctl enable autofs +# 6. Netzwerk konfigurieren (NetworkManager) +configure_network() { + echo -e "${YELLOW}=== Netzwerkkonfiguration ===${NC}" + + # Aktives Interface finden + INTERFACE=$(ip -o -4 route show to default | awk '{print $5}' | head -n1) + + if [ -z "$INTERFACE" ]; then + echo -e "${RED}Kein aktives Netzwerk-Interface gefunden! Überspringe Netzwerkkonfiguration.${NC}" + return + fi + + echo -e "Aktives Interface erkannt: ${GREEN}$INTERFACE${NC}" + + # Verbindungsprofil ermitteln + CON_NAME=$(nmcli -t -f NAME,DEVICE connection show --active | grep ":$INTERFACE" | cut -d: -f1 | head -n1) + + if [ -z "$CON_NAME" ]; then + echo -e "${RED}Kein NetworkManager-Profil für $INTERFACE gefunden.${NC}" + return + fi + + echo -e "Bearbeite Verbindung: ${GREEN}$CON_NAME${NC}" + + # Eingabe der letzten Ziffer + while true; do + read -p "Bitte die letzte Zahl der IP-Adresse eingeben (192.168.176.XXX): " IP_SUFFIX + if [[ "$IP_SUFFIX" =~ ^[0-9]+$ ]] && [ "$IP_SUFFIX" -ge 1 ] && [ "$IP_SUFFIX" -le 254 ]; then + break + else + echo -e "${RED}Ungültige Eingabe. Bitte eine Zahl zwischen 1 und 254 eingeben.${NC}" + fi + done + + NEW_IP="192.168.176.$IP_SUFFIX" + GATEWAY="192.168.176.1" + DNS="192.168.176.101 192.168.174.101 1.1.1.1" + + echo -e "${GREEN}Setze IP auf $NEW_IP...${NC}" + + # Konfiguration anwenden + sudo nmcli con mod "$CON_NAME" \ + ipv4.addresses "$NEW_IP/24" \ + ipv4.gateway "$GATEWAY" \ + ipv4.dns "$DNS" \ + ipv4.method manual + + echo -e "${GREEN}Netzwerkeinstellungen gespeichert.${NC}" + echo -e "${YELLOW}ACHTUNG: Die neuen Einstellungen werden erst nach einem Neustart der Verbindung aktiv.${NC}" + + read -p "Soll die Verbindung jetzt neu gestartet werden? (j/n): " RESTART_NET + if [[ "$RESTART_NET" =~ ^[jJ]$ ]]; then + sudo nmcli con up "$CON_NAME" + fi } -# Funktion: Gemeinsamen Ordner einrichten -shared_dir() { - SHARED_DIR="/home/shared" +# 7. Univention Domain Join installieren (Ubuntu PPA Methode) +install_univention_join() { + echo -e "${YELLOW}=== Univention Domain Join Installation ===${NC}" + + echo -e "${GREEN}Füge Univention PPA hinzu...${NC}" + # -y flag akzeptiert automatisch die Bestätigung + sudo add-apt-repository -y ppa:univention-dev/ppa + + echo -e "${GREEN}Aktualisiere Paketquellen...${NC}" + sudo apt-get update + + echo -e "${GREEN}Installiere univention-domain-join...${NC}" + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y univention-domain-join + + if [ $? -eq 0 ]; then + echo -e "${GREEN}Univention Domain Join erfolgreich installiert.${NC}" + else + echo -e "${RED}Fehler bei der Installation von Univention Domain Join.${NC}" + fi +} - echo -e "${GREEN}Erstelle den gemeinsamen Ordner unter $SHARED_DIR...${NC}" - sudo mkdir -p "$SHARED_DIR" - sudo chmod 1777 "$SHARED_DIR" - echo -e "${GREEN}Der Ordner $SHARED_DIR wurde erfolgreich erstellt und konfiguriert.${NC}" +# 8. Autofs & Shared Dir +setup_system_extras() { + echo -e "${GREEN}Richte autofs ein...${NC}" + sudo apt install -y autofs + if ! grep -q "/net /etc/auto.net" /etc/auto.master; then + echo "/net /etc/auto.net --timeout=600" | sudo tee -a /etc/auto.master + fi + systemctl restart autofs + systemctl enable autofs + + SHARED_DIR="/home/shared" + if [ ! -d "$SHARED_DIR" ]; then + sudo mkdir -p "$SHARED_DIR" + sudo chmod 1777 "$SHARED_DIR" + fi } # ================================ -# Hauptskript +# HAUPTABLAUF # ================================ update_sources install_apt_packages install_snap_packages install_flatpak_packages install_deb_packages -autofs -shared_dir +setup_system_extras -echo -e "${GREEN}Skript abgeschlossen.${NC}" +# Interaktive Teile am Ende +configure_network +install_univention_join + +echo -e "${GREEN}Skript vollständig abgeschlossen.${NC}" \ No newline at end of file