import requests import re import json # Logischer Name (wie im UI) → Launchpad-Quellpaketname PACKAGES = { "python3": "python3-defaults", "nginx": "nginx", "openssh-server": "openssh" } # Ubuntu-Release (muss auf launchpad.net vorhanden sein) UBUNTU_RELEASE = "noble" def get_version(pkg_source, release=UBUNTU_RELEASE): try: url = f"https://launchpad.net/ubuntu/{release}/+source/{pkg_source}" r = requests.get(url, timeout=10) if r.status_code != 200: print(f"⚠️ Fehler {r.status_code} bei {url}") return None # Suche nach: Current version:
VERSION
match = re.search(r'Current version:\s*
([^<]+)
', r.text) return match.group(1).strip() if match else None except Exception as e: print(f"❌ Fehler bei {pkg_source}: {e}") return None def generate(): result = {} for display_name, source_name in PACKAGES.items(): version = get_version(source_name) if version: result[display_name] = version else: print(f"❌ Keine Version gefunden für {display_name}") return result if __name__ == "__main__": versions = generate() with open("reference_versions.json", "w") as f: json.dump(versions, f, indent=2) print("✅ Referenz gespeichert in reference_versions.json")