#!/bin/bash # Script Name: linux-updater.v4.sh # Beschreibung: Wöchentliches Update-Skript für Linux-Systeme # Aufruf: bash ./linux-updater.v4.sh # Autor: Patrick Asmus # Web: https://www.techniverse.net # Git-Reposit.: https://git.techniverse.net/scriptos/linux-updater.git # Version: 4.0 # Datum: 25.11.2024 # Modifikation: Integration von Ntfy für Benachrichtigungen ##################################################### # Umgebungsvariablen source /root/.env/.linux-updater.v4.env # Variablen SCRIPT_NAME=linux-updater.v4.sh HOSTNAME=$(hostname) MAIL=root LOGDIR=/var/log/script-logs # Benachrichtigungseinstellungen NOTIFY_SUCCESS=0 NOTIFY_FAILURE=1 NTFY_URL=$NTFY_URL_ENV # Logging aktivieren mkdir -p $LOGDIR exec &> >(tee -a "$LOGDIR/$SCRIPT_NAME.log") # Aktualisiere das System sudo apt update && sudo apt upgrade -y # Überprüfe, ob das Update erfolgreich war if [ $? -eq 0 ]; then # Räume das System auf sudo apt-get autoremove --purge -y sudo apt-get clean -y # Bereinige Log-Dateien, die älter als 60 Tage sind find /var/log -type f -name "*.log" -mtime +60 -exec rm {} \; # Bereinige den APT-Cache sudo apt-get clean # Bereinige den Paket-Cache von alten Paketen sudo apt-get autoclean # Entferne ungenutzte Abhängigkeiten sudo apt-get autoremove --purge # Bereinige die Homeverzeichnisse der Benutzer find /home -type f \( -name "*.tmp" -o -name "*.swp" \) -delete # Leere den Trash-Ordner des Root-Benutzers sudo rm -rf /root/.local/share/Trash/* # Leere den Trash-Ordner der Benutzer, falls vorhanden for user in /home/*; do if [ -d "$user/.local/share/Trash" ]; then sudo rm -rf "$user/.local/share/Trash/*" fi done # Leere das temporäre Verzeichnis sudo rm -rf /tmp/* # Sende Benachrichtigung über Ntfy, wenn Update erfolgreich if [ "$NOTIFY_SUCCESS" -eq 1 ]; then curl -H "Title: Update erfolgreich" \ -H "Priority: min" \ -H "Tags: white_check_mark,partying_face" \ -H "Attach: https://assets.techniverse.net/f1/scripts/happy_meme.jpg" \ -d "Das Update auf Server '$HOSTNAME' wurde erfolgreich abgeschlossen." \ "$NTFY_URL" fi else # Sende E-Mail, wenn Update fehlgeschlagen log_contents=$(cat $LOGDIR/$SCRIPT_NAME.log) echo -e "Das Update auf $HOSTNAME ist fehlgeschlagen! \n\nLog-Inhalt: \n\n$log_contents" | mail -s "Wöchentliches Update auf $HOSTNAME fehlgeschlagen" $MAIL # Sende Benachrichtigung über Ntfy, wenn Update fehlgeschlagen if [ "$NOTIFY_FAILURE" -eq 1 ]; then curl -H "Title: Update fehlgeschlagen" \ -H "Priority: high" \ -H "Tags: warning,skull" \ -H "Attach: https://assets.techniverse.net/f1/scripts/fire_meme.jpg" \ -d "Das Update auf Server '$HOSTNAME' ist fehlgeschlagen." \ "$NTFY_URL" fi fi exit 0