From 21097357c7f5bf36037c90c78fe12a9bd12c91ba Mon Sep 17 00:00:00 2001 From: patrick Date: Fri, 20 Jun 2025 21:41:48 +0200 Subject: [PATCH] =?UTF-8?q?pve-kernel-cleaner.sh=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pve-kernel-cleaner.sh | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 pve-kernel-cleaner.sh diff --git a/pve-kernel-cleaner.sh b/pve-kernel-cleaner.sh new file mode 100644 index 0000000..559c736 --- /dev/null +++ b/pve-kernel-cleaner.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# === PVE Kernel Cleaner Script === +# Kompatibel mit EFI & BIOS, erkennt ZFS Pools und prüft Belegung +# Erkennt auch Subscription-Status +# Autor: Patrick Perlbach +# Datum: 2025-06-20 + +set -e + +echo "==== PVE Kernel Cleaner ====" +echo "" + +# 1. Prüfen ob EFI oder BIOS +if [ -d /sys/firmware/efi ]; then + echo "Bootmodus: EFI" +else + echo "Bootmodus: BIOS (Legacy)" +fi + +# 1.1 Subscription-Status prüfen +echo "" +echo "APT-Repositories:" +repo_files=$(find /etc/apt/ -name "*.list") + +if grep -rq "enterprise.proxmox.com" $repo_files; then + echo "PVE Enterprise Repository (Subscription) ist aktiv" +elif grep -rq "no-subscription" $repo_files; then + echo "PVE No-Subscription Repository ist aktiv" +else + echo "Kein bekanntes PVE Repository aktiv, prüfe apt-Sources manuell" +fi + +echo "" + +# 2. ZFS Pools prüfen +echo "ZFS Pool Übersicht:" +if command -v zpool &> /dev/null; then + zpool list -Ho name,capacity | while read -r pool cap; do + cap_num=$(echo $cap | tr -d '%') + warn="" + if (( cap_num >= 80 )); then + warn="ACHTUNG: >80% belegt" + fi + echo " → $pool: $cap $warn" + done +else + echo "ZFS ist nicht installiert oder zpool-Befehl nicht verfügbar." +fi + +echo "" + +# 3. Liste der installierten PVE-Kernel anzeigen und alte Kernel identifizieren +echo "Installierte PVE-Kernel:" +kernel_list=$(dpkg --list | grep pve-kernel | awk '{print $2}' | sort -V) +current_kernel=$(uname -r | cut -d '-' -f1-2) + +to_remove=() + +while read -r kernel; do + version=$(echo "$kernel" | sed -n 's/^pve-kernel-\([0-9.]*-[0-9]*\).*/\1/p') + if [ "$version" == "$current_kernel" ]; then + echo " * $kernel (aktuell in Verwendung)" + else + echo " - $kernel (alt)" + to_remove+=("$kernel") + fi +done <<< "$kernel_list" + +echo "" +if [ ${#to_remove[@]} -eq 0 ]; then + echo "Keine alten Kernel gefunden, nichts zu tun." + exit 0 +fi + +# 4. Nutzerabfrage zur Entfernung +echo "Die folgenden alten Kernel könnten entfernt werden:" +for k in "${to_remove[@]}"; do + echo " - $k" +done + +echo "" +read -p "Möchtest du diese alten Kernel jetzt entfernen? (j/n): " confirm +if [[ "$confirm" =~ ^[Jj]$ ]]; then + echo "Entferne alte Kernel..." + apt remove --purge -y "${to_remove[@]}" + echo "Alte Kernel wurden entfernt." +else + echo "Abbruch, keine Kernel wurden entfernt." +fi + +echo "" +echo "==== Fertig ====" \ No newline at end of file