From a64ef966534f8dba6af889ba4bfce15691bfc85b Mon Sep 17 00:00:00 2001 From: Nippy Date: Sun, 1 Nov 2026 18:13:54 +0100 Subject: új telepítő MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- raveos-center/raveos_center/diagnosztika.py | 85 +++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 raveos-center/raveos_center/diagnosztika.py (limited to 'raveos-center/raveos_center/diagnosztika.py') diff --git a/raveos-center/raveos_center/diagnosztika.py b/raveos-center/raveos_center/diagnosztika.py new file mode 100644 index 0000000..445c4d4 --- /dev/null +++ b/raveos-center/raveos_center/diagnosztika.py @@ -0,0 +1,85 @@ +import getpass +import platform +import re +import socket +import subprocess +from datetime import datetime + +from raveos_center import rendszerinfo + +TARTALOM = [ + "rendszer: RaveOS verzió, kernel, asztali környezet", + "hardver: processzor, memória, videokártya, hálózati és hangeszközök, lemezek", + "illesztőprogramok: betöltött GPU modulok", + "csomagok: RaveOS csomagok és a telepített csomagok száma", + "hibák: hibás szolgáltatások és a rendszernapló hibái az utolsó indítás óta", + "lemezhasználat és fájlrendszer", +] + +KITAKARAS = "IP- és MAC-címek, lemez UUID-k, egyedi azonosítók, a gép neve és a felhasználóneved" + + +def _ki(parancs, ido=30): + try: + k = subprocess.run(parancs, capture_output=True, text=True, timeout=ido) + except (OSError, subprocess.TimeoutExpired): + return "(nem elérhető)" + return (k.stdout or k.stderr or "").rstrip() or "(üres)" + + +def _szakasz(cim, tartalom): + return f"== {cim} ==\n{tartalom}\n" + + +def kitakar(szoveg): + szoveg = re.sub(r"\b(\d{1,3}\.){3}\d{1,3}\b", "[ip]", szoveg) + szoveg = re.sub(r"\b([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}\b", "[mac]", szoveg) + szoveg = re.sub(r"\b([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b", "[ip6]", szoveg) + szoveg = re.sub(r"\b([0-9a-fA-F]{1,4}:){1,6}:([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?", "[ip6]", szoveg) + szoveg = re.sub(r"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "[uuid]", szoveg) + szoveg = re.sub(r"\b[0-9a-fA-F]{32}\b", "[id]", szoveg) + szoveg = re.sub(r"(?i)\b(pass(word)?|passwd|token|secret|api[_-]?key|auth)(\s*[=:]\s*)\S+", r"\1\3[titok]", szoveg) + gep = socket.gethostname() + if gep and len(gep) > 1: + szoveg = re.sub(rf"\b{re.escape(gep)}\b", "[gep]", szoveg) + felhasznalo = getpass.getuser() + if felhasznalo and felhasznalo != "root" and len(felhasznalo) > 1: + szoveg = re.sub(rf"\b{re.escape(felhasznalo)}\b", "[user]", szoveg) + return szoveg + + +def jelentes(): + reszek = [ + f"RaveOS Center diagnosztika\n{datetime.now():%Y-%m-%d %H:%M}\n", + _szakasz( + "rendszer", + f"verzio: {rendszerinfo.raveos_verzio()}\nkernel: {platform.release()}\n" + f"asztal: {rendszerinfo.asztal()}\nuzemido: {rendszerinfo.uzemido()}", + ), + _szakasz( + "hardver", + f"processzor: {rendszerinfo.cpu()}\nmemoria: {rendszerinfo.memoria()}\n" + + _ki(["sh", "-c", "lspci -nn | grep -iE 'vga|3d|display|ethernet|network|wireless|audio'"]) + + "\n" + + _ki(["lsblk", "-d", "-n", "-e", "7,11", "-o", "NAME,SIZE,MODEL,TRAN,ROTA"]), + ), + _szakasz("illesztoprogramok", ", ".join(rendszerinfo.gpu_driverek()) or "(nincs)"), + _szakasz( + "csomagok", + _ki(["sh", "-c", "pacman -Q | grep -E '^(raveos|calamares|linux|mesa|nvidia)'"]) + + f"\nosszes: {_ki(['sh', '-c', 'pacman -Qq | wc -l'])}", + ), + _szakasz("hibas szolgaltatasok", _ki(["systemctl", "--failed", "--no-legend", "--no-pager"])), + _szakasz("rendszernaplo hibai", _ki(["journalctl", "-b", "-p", "err", "-n", "150", "--no-pager"])), + _szakasz("lemez", _ki(["df", "-h", "/", "/home"]) + f"\nfajlrendszer: {rendszerinfo.fajlrendszer()}"), + ] + return kitakar("\n".join(reszek)) + + +def rendszer_osszegzes(): + return { + "RaveOS": rendszerinfo.raveos_verzio(), + "Kernel": platform.release(), + "Asztal": rendszerinfo.asztal(), + "GPU": ", ".join(rendszerinfo.gpuk()) or "ismeretlen", + } -- cgit v1.3