diff --git a/Maintenance/Update.sh b/Maintenance/Update.sh new file mode 100755 index 0000000..95b0898 --- /dev/null +++ b/Maintenance/Update.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# === IMPORTS === +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/../Utility/NetworkCheck.sh" +source "$SCRIPT_DIR/../Utility/Log.sh" + +# === ROOT-PRÜFUNG === +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgeführt werden! Bitte starte es mit sudo." + exit 1 +fi + +# === Skript-Funktionen === +cleanup() { + log "Update-Skript abgebrochen" + exit 1 +} + +update_packages() { + log "Führe 'apt update' aus" + apt update |& while IFS= read -r line; do log "$line"; done + log "Befehl abgeschlossen" + + log "Führe 'apt upgrade' aus" + apt upgrade -y |& while IFS= read -r line; do log "$line"; done + log "Befehl abgeschlossen" +} + +update_flatpak() { + log "Führe 'flatpak update' für alle Nutzer aus" + for user in $(getent passwd | awk -F: '$3 >= 1000 && $7 !~ /(\/sbin\/nologin|\/bin\/false|\/usr\/sbin\/nologin)/ { print $1 }'); do + sudo -u "$user" flatpak update -y |& while IFS= read -r line; do log "$line"; done + log "Befehl 'sudo -u $user flatpak update' abgeschlossen" + done +} + +# === Hauptskript === + +trap cleanup SIGINT + +wait_for_internet_connection + +update_packages +update_flatpak + +log "Update-Skript beendet"