proxmox-update.py aktualisiert
This commit is contained in:
+34
-34
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user