#!/bin/bash
clear
## falls das Script nicht als root ausgeführt, das Script mit root-Rechten ausführen!
##if [[ $EUID != 0 ]]; then
##    sudo $0
##    exit
##fi
echo "Schritt 1 von 6: Initialisierung und Repository aktualisieren: apt clean all && apt update"
if [[ -f debian_update_old2.err ]]; then
    sudo rm debian_update_old2.err
fi
if [[ -f debian_update_old1.err ]]; then
    sudo mv debian_update_old1.err debian_update_old2.err
fi
if [[ -f debian_update.err ]]; then
    sudo mv debian_update.err debian_update_old1.err
fi
if [[ -f debian_update_old2.txt ]]; then
    sudo rm debian_update_old2.txt
fi
if [[ -f debian_update_old1.txt ]]; then
    sudo mv debian_update_old1.txt debian_update_old2.txt
fi
if [[ -f debian_update.txt ]]; then
    sudo mv debian_update.txt debian_update_old1.txt
fi
echo " " > debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "1.1. apt-get clean all:"
echo "1.1. apt-get clean all:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get clean all >> debian_update.txt
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "1.2. apt-get update:"
echo "1.2. apt-get update:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get update > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "1.3. apt-get --yes install aptitude debian-keyring debian-archive-keyring:"
echo "1.3. apt-get --yes install aptitude debian-keyring debian-archive-keyring:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get --yes install aptitude debian-keyring debian-archive-keyring > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "1.4. offizielle puplic keys der Distributionen neu laden"
echo "1.4. offizielle puplic keys der Distributionen neu laden" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
wget -O - https://ftp-master.debian.org/keys/archive-key-8.asc | apt-key add -
if [[ -f /etc/apt/trusted.gpg ]]; then
# diese Art der public keys wird nicht mehr unterstützt (depreciated)
    sudo rm debian_update_old2.err
fi
sudo ln -f -s /usr/share/keyrings/debian-archive-* /etc/apt/trusted.gpg.d/


echo " "
echo "Schritt 2 von 6: Installierte Pakete der aktuellen Distribution aktualisieren: apt upgrade"
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "2. apt-get upgrade --yes:"
echo "2. apt-get upgrade --yes:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get upgrade --auto-remove > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)


echo " "
echo "Schritt 3 von 6: Pakete ggf. auf die nächsthöhere Distribution aktualisieren: apt dist-upgrade"
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "3. apt-get dist-upgrade --yes:"
echo "3. apt-get dist-upgrade --yes:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get full-upgrade --auto-remove > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)


echo " "
echo "Schritt 4 von 6: Pakete automatisch korrigieren, falls es Abhängigkeitsprobleme gab: apt install --fix-broken"
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "4. apt-get install --fix-broken --assume-yes:"
echo "4. apt-get install --fix-broken --assume-yes:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get install --fix-broken --assume-yes > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)


echo " "
echo "Schritt 5 von 6: Aufräumen: Nicht mehr erforderliche Pakete entfernen: apt autoclean && apt autoremove"
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "5.1. apt-get autoclean --assume-yes:"
echo "5.1. apt-get autoclean --assume-yes:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get autoclean --assume-yes > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "5.2. apt-get autoremove --assume-yes:"
echo "5.2. apt-get autoremove --assume-yes:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-get autoremove --assume-yes > >(tee -a debian_update.txt) 2> >(tee -a debian_update.err >&2)
if [[ $? -eq 0 ]]; then
    echo "     ... auch die alten Konfigurationsdateien bereinigen ..."
    echo " " >> debian_update.txt
    echo "=============================================================" >> debian_update.txt
    echo "5.3. dpkg --purge --pending:"
    echo "5.3. dpkg --purge --pending:" >> debian_update.txt
    echo "=============================================================" >> debian_update.txt
    echo " " >> debian_update.txt
    sudo dpkg --purge --pending >> debian_update.txt 2>> debian_update.txt
fi


echo " "
echo "Schritt 6 von 6: Liste über installierte Pakete erstellen: dpkg -l"
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "6.1. apt-cache policy:"
echo "6.1. apt-cache policy:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo apt-cache policy | grep http | awk '{print $2" "$3}' | sort -u >> debian_update.txt
echo " " >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo "6.2. dpkg -l:"
echo "6.2. dpkg -l:" >> debian_update.txt
echo "=============================================================" >> debian_update.txt
echo " " >> debian_update.txt
sudo dpkg -l >> debian_update.txt


## falls Fehler in die Datei geschreiben sein sollten, sind diese manuell zu korrigieren
if [[ -s debian_update.err ]]; then
    echo " "
    echo -e "\033[6;33mEs gab mind. einen Fehler...\033[0m"
    echo -e "\033[1;33mManuelle Korrektur mittels 'Synaptic Paketverwaltung' erforderlich!\033[0m"
    read -p "Drücken Sie eine beliebige Taste..."
    /usr/bin/synaptic-pkexec
else
    echo " "
    echo "Fertig!"
    read -p "Drücken Sie eine beliebige Taste..."
fi
exit 0
