From cda73fc57278ae7916550c1f2d9ab89220a1a260 Mon Sep 17 00:00:00 2001 From: scriptos Date: Fri, 11 Aug 2023 15:20:27 +0200 Subject: [PATCH] Bereinigung der Verzeichnisse + Sicherung Kernel reingenommen --- README.md | 2 +- weekly-update.v2.sh | 57 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 20e9ecc..55b6bfc 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Dieses Skript ist eine verbesserte Version eines wöchentlichen Update-Skripts f - Definiert Variablen für den Hostnamen des Systems und die E-Mail-Adresse für Benachrichtigungen bei fehlgeschlagenen Updates. - Aktualisiert das System mit den Befehlen `sudo apt update` und `sudo apt upgrade -y`. - Überprüft das Ergebnis des Updates und sendet bei einem fehlgeschlagenen Update eine E-Mail mit Informationen und dem Protokollinhalt. -- Führt Systembereinigungsbefehle (`sudo apt-get autoremove --purge -y` und `sudo apt-get clean -y`) aus, wenn das Update erfolgreich war. +- Führt Systembereinigungsbefehle aus, bereinigt Verzeichnisse und sichert den letzten funktionierenden Kernel, wenn das Update erfolgreich war. ## Verwendung diff --git a/weekly-update.v2.sh b/weekly-update.v2.sh index 64ee08a..6e605fc 100644 --- a/weekly-update.v2.sh +++ b/weekly-update.v2.sh @@ -5,9 +5,9 @@ # Autor: Patrick Asmus # Web: https://www.media-techport.de # Git-Reposit.: https://git.media-techport.de/scriptos/weekly-updater.git -# Version: 2.0.3 -# Datum: 15.07.2023 -# Modifikation: Header angepasst, Tagesprüfung rausgenommen +# Version: 2.1.0 +# Datum: 11.08.2023 +# Modifikation: Bereinigung der Verzeichnisse + Sicherung Kernel reingenommen ##################################################### # Logverzeichnis erstellen @@ -22,15 +22,46 @@ LOGDIR=/var/log/script-logs # Aktualisiere das System und speichere die Ausgabe in eine Log-Datei sudo apt update && sudo apt upgrade -y &> /var/log/script-logs/weekly-update.v2.log - # Überpruefe, ob das Update erfolgreich war - if [ $? -ne 0 ]; then - # Sende eine E-Mail, wenn das Update fehlgeschlagen ist - log_contents=$(cat $LOGDIR/$SCRIPT_NAME.log) - echo -e "Das Update auf $HOSTNAME ist fehlgeschlagen! \n\nLog-Inhalt: \n\n$log_contents" | mail -s "Woechentliches Update auf $hostname fehlgeschlagen" $MAIL - else - # Raeume das System auf - sudo apt-get autoremove --purge -y - sudo apt-get clean -y - fi +# Ü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 30 Tage sind + find /var/log -type f -name "*.log" -mtime +30 -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 "*.bak" -o -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 + for user in /home/*; do + if [ -d "$user/.local/share/Trash" ]; then + sudo rm -rf "$user/.local/share/Trash/*" + fi + done + + # Leere den temporären Verzeichnis + sudo rm -rf /tmp/* + + # Behalte den letzten verwendeten Kernel + sudo apt-get remove --purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -v -e "$(uname -r | cut -f1,2 -d"-")") +else + # Sende eine E-Mail, wenn das Update fehlgeschlagen ist + log_contents=$(cat $LOGDIR/$SCRIPT_NAME.log) + echo -e "Das Update auf $HOSTNAME ist fehlgeschlagen! \n\nLog-Inhalt: \n\n$log_contents" | mail -s "Woechentliches Update auf $HOSTNAME fehlgeschlagen" $MAIL +fi exit 0