proxmox-update.py aktualisiert

This commit is contained in:
2026-08-11 10:45:57 +02:00
parent 81e99754a2
commit 541537a8c2
+34 -34
View File
@@ -80,7 +80,7 @@ def run(cmd, check=True, quiet=False):
cmd = shlex.split(cmd)
log(
f"Ausführen: {' '.join(cmd)}"
f"Ausführen: {' '.join(cmd)}"
)
try:
@@ -104,7 +104,7 @@ def run(cmd, check=True, quiet=False):
except FileNotFoundError as e:
log(
f" Befehl nicht gefunden: {' '.join(cmd)} ({e})",
f"FEHLER: Befehl nicht gefunden: {' '.join(cmd)} ({e})",
"error"
)
@@ -116,7 +116,7 @@ def run(cmd, check=True, quiet=False):
except subprocess.CalledProcessError as e:
log(
f"❌ Fehler: {' '.join(cmd)}",
f"FEHLER: {' '.join(cmd)}",
"error"
)
@@ -136,7 +136,7 @@ def run_pipeline(cmd_str, check=False):
Kommandos verwenden - niemals mit Benutzereingaben füttern.
"""
log(f"Ausführen (shell): {cmd_str}")
log(f"Ausführen (shell): {cmd_str}")
try:
result = subprocess.run(
@@ -158,7 +158,7 @@ def run_pipeline(cmd_str, check=False):
except subprocess.CalledProcessError as e:
log(f"❌ Fehler: {cmd_str}", "error")
log(f"FEHLER: {cmd_str}", "error")
if e.stderr:
log(e.stderr.strip(), "error")
@@ -230,7 +230,7 @@ def get_installed_kernel():
if installed_pkgs:
log(
"📋 Installierte Kernel-Pakete: " + ", ".join(sorted(installed_pkgs))
"Installierte Kernel-Pakete: " + ", ".join(sorted(installed_pkgs))
)
versions = []
@@ -270,7 +270,7 @@ def cleanup_old_kernel_configs():
if not residual_pkgs:
log(
" Keine Konfigurationsreste alter Kernel-Pakete gefunden"
"OK: Keine Konfigurationsreste alter Kernel-Pakete gefunden"
)
return
@@ -279,13 +279,13 @@ def cleanup_old_kernel_configs():
total = len(residual_pkgs)
log(
f"🧹 Entferne Konfigurationsreste von {total} alten Kernel-Paketen"
f"Entferne Konfigurationsreste von {total} alten Kernel-Paketen"
)
for index, pkg in enumerate(residual_pkgs, start=1):
log(
f"🗑️ ({index}/{total}) Lösche Reste von: {pkg}"
f"({index}/{total}) Lösche Reste von: {pkg}"
)
run(
@@ -295,7 +295,7 @@ def cleanup_old_kernel_configs():
)
log(
f" ({index}/{total}) Erledigt: {pkg}"
f"OK: ({index}/{total}) Erledigt: {pkg}"
)
@@ -306,16 +306,16 @@ def reboot_required():
installed = get_installed_kernel()
log(
f"🖥️ Kernel aktiv: {running}"
f"Kernel aktiv: {running}"
)
log(
f"📦 Kernel installiert: {installed}"
f"Kernel installiert: {installed}"
)
if not running or not installed:
log(
"⚠️ Kernel-Vergleich nicht möglich (leerer Wert) - "
"WARNUNG: Kernel-Vergleich nicht möglich (leerer Wert) - "
"gehe sicherheitshalber von 'kein Reboot nötig' aus",
"warn"
)
@@ -347,7 +347,7 @@ def proxmox_boot_ok():
except FileNotFoundError as e:
log(
f" proxmox-boot-tool nicht gefunden (PATH-Problem?): {e}",
f"FEHLER: proxmox-boot-tool nicht gefunden (PATH-Problem?): {e}",
"error"
)
@@ -371,7 +371,7 @@ def proxmox_boot_ok():
)
else:
log(
f" proxmox-boot-tool status lieferte Exit-Code {result.returncode} ohne Fehlermeldung",
f"FEHLER: proxmox-boot-tool status lieferte Exit-Code {result.returncode} ohne Fehlermeldung",
"error"
)
@@ -381,7 +381,7 @@ def proxmox_boot_ok():
def refresh_boot():
log(
"🔄 Aktualisiere Proxmox Bootloader"
"Aktualisiere Proxmox Bootloader"
)
run([
@@ -419,13 +419,13 @@ def has_updates():
if updates:
log(
f"📦 {len(updates)} Updates verfügbar"
f"{len(updates)} Updates verfügbar"
)
return True
log(
" Keine Updates verfügbar"
"OK: Keine Updates verfügbar"
)
return False
@@ -442,7 +442,7 @@ def create_snapshot(dataset):
)
log(
f"📸 Snapshot erstellen: {snapshot}"
f"Snapshot erstellen: {snapshot}"
)
run([
@@ -488,7 +488,7 @@ def cleanup_snapshots(dataset):
for snap in snapshots[:-MAX_SNAPSHOTS]:
log(
f"🗑️ Lösche Snapshot: {snap}"
f"Lösche Snapshot: {snap}"
)
run([
@@ -506,7 +506,7 @@ def cleanup_snapshots(dataset):
def upgrade_system():
log(
"⚙️ Starte dist-upgrade"
"Starte dist-upgrade"
)
run([
@@ -516,7 +516,7 @@ def upgrade_system():
])
log(
"🧼 Starte autoremove"
"Starte autoremove"
)
run([
@@ -536,17 +536,17 @@ def upgrade_system():
def main():
log(
"🚀 ===== Proxmox Update gestartet ====="
"===== Proxmox Update gestartet ====="
)
log(
f"REBOOT-Flag: {REBOOT_FLAG}"
f"REBOOT-Flag: {REBOOT_FLAG}"
)
if os.geteuid() != 0:
log(
" Muss als root laufen",
"FEHLER: Muss als root laufen",
"error"
)
@@ -555,7 +555,7 @@ def main():
kernel_before = get_running_kernel()
log(
f"🖥️ Kernel vor Update: {kernel_before}"
f"Kernel vor Update: {kernel_before}"
)
if has_updates():
@@ -573,7 +573,7 @@ def main():
else:
log(
"Keine Updates installiert"
"Keine Updates installiert"
)
# auch ohne Update-Lauf vorhandene Reste alter Kernel aufräumen
@@ -583,24 +583,24 @@ def main():
if reboot_required():
log(
"⚠️ Neuer Kernel aktivieren erforderlich",
"WARNUNG: Neuer Kernel aktivieren erforderlich",
"warn"
)
if REBOOT_FLAG == "YES":
log(
"🔍 Prüfe proxmox-boot-tool"
"Prüfe proxmox-boot-tool"
)
if proxmox_boot_ok():
log(
" Bootloader OK"
"OK: Bootloader OK"
)
log(
"🔄 REBOOT=YES erkannt"
"REBOOT=YES erkannt"
)
run([
@@ -613,20 +613,20 @@ def main():
else:
log(
" Bootloader Prüfung fehlgeschlagen - kein Neustart",
"FEHLER: Bootloader Prüfung fehlgeschlagen - kein Neustart",
"error"
)
else:
log(
"REBOOT-Flag ist nicht 'YES' - kein automatischer Neustart"
"REBOOT-Flag ist nicht 'YES' - kein automatischer Neustart"
)
sys.exit(1)
log(
" Update erfolgreich abgeschlossen"
"OK: Update erfolgreich abgeschlossen"
)
sys.exit(0)