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