| import platform |
| import psutil |
| import socket |
| import os |
| from utils.format import fmt_bytes |
|
|
| def get_system_info() -> str: |
| """ |
| Coleta e formata informações detalhadas do sistema, hardware e usuário. |
| Handler para o comando /sysinfo. |
| """ |
| try: |
| |
| uname = platform.uname() |
| info = ["System Info"] |
| info.append(f" - OS Platform: {uname.system} {uname.release} (Version: {uname.version})") |
| info.append(f" - Architecture: {uname.machine} ({platform.architecture()[0]})") |
| info.append(f" - Processor: {uname.processor}") |
| info.append(f" - Hostname: {socket.gethostname()}") |
| try: |
| user = os.getlogin() |
| info.append(f" - Running as User: {user}") |
| except OSError: |
| info.append(" - Running as User: Not available") |
|
|
| |
| info.append(f"\nCPU Info") |
| cpu_freq = psutil.cpu_freq() |
| info.append(f" - Physical Cores: {psutil.cpu_count(logical=False)}") |
| info.append(f" - Logical Cores: {psutil.cpu_count(logical=True)}") |
| if cpu_freq: |
| info.append(f" - Max Frequency: {cpu_freq.max:.2f} Mhz") |
| info.append(f" - Current Frequency: {cpu_freq.current:.2f} Mhz") |
| info.append(f" - Total CPU Usage: {psutil.cpu_percent(interval=1)}%") |
|
|
| |
| mem = psutil.virtual_memory() |
| info.append(f"\nMemory (RAM)") |
| info.append(f" - Total: {fmt_bytes(mem.total)}") |
| info.append(f" - Available: {fmt_bytes(mem.available)}") |
| info.append(f" - Used: {fmt_bytes(mem.used)} ({mem.percent}%)") |
|
|
| |
| info.append(f"\nDisk Partitions") |
| partitions = psutil.disk_partitions() |
| for p in partitions: |
| try: |
| usage = psutil.disk_usage(p.mountpoint) |
| info.append(f" - Device: {p.device} ({p.fstype}) at {p.mountpoint}") |
| info.append(f" - Size: {fmt_bytes(usage.total)}") |
| info.append(f" - Used: {fmt_bytes(usage.used)} ({usage.percent}%)") |
| info.append(f" - Free: {fmt_bytes(usage.free)}") |
| except (FileNotFoundError, PermissionError) as e: |
| info.append(f" - Could not inspect {p.mountpoint}: {e}") |
| |
| return "\n".join(info) |
|
|
| except Exception as e: |
| return f"Error collecting system info: {e}" |
|
|
| |
| |
| |
|
|