Skripte/Maintenance/Update.sh

58 lines
1.4 KiB
Bash
Executable File

#!/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
# === Variablen ===
USER="$SUDO_USER"
# === 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() {
if ! command -v flatpak >/dev/null 2 >&1; then
log "Flatpak ist nicht installiert. Vorgang wird übersprungen."
return
fi
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
sudo -u $USER git pull |& while IFS= read -r line; do log "$line"; done
update_packages
update_flatpak
log "Update-Skript beendet"