linux-updater/linux-updater.v3.sh
2024-11-29 21:23:22 +01:00

81 lines
2.4 KiB
Bash

#!/bin/bash
# Script Name: linux-updater.v3.sh
# Beschreibung: Wöchentliches Update-Skript für Linux-Systeme
# Aufruf: bash ./linux-updater.v3.sh
# Autor: Patrick Asmus
# Web: https://www.techniverse.net
# Git-Reposit.: https://git.techniverse.net/scriptos/linux-updater.git
# Version: 3.1
# Datum: 24.11.2024
# Modifikation: Wording geändert
#####################################################
# Umgebungsvariablen
source /root/.env/.linux-updater.v3.env
# Variablen
SCRIPT_NAME=linux-updater.v3.sh
HOSTNAME=$(hostname)
MAIL=root
LOGDIR=/var/log/script-logs
WEBHOOK_URL=$WEBHOOK_URL_ENV
API_KEY=$API_KEY_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 "*.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, 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 Webhook
curl -d "{\"body\": \"$HOSTNAME: Das wöchentliche Update wurde erfolgreich durchgeführt.\", \"key\": \"$API_KEY\"}" \
"$WEBHOOK_URL"
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 "Wöchentliches Update auf $HOSTNAME fehlgeschlagen" $MAIL
# Sende Benachrichtigung über Webhook
curl -d "{\"body\": \"$HOSTNAME: Das wöchentliche Update ist fehlgeschlagen.\", \"key\": \"$API_KEY\"}" \
"$WEBHOOK_URL"
fi
exit 0