| | 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}" |
| |
|
| | |
| | |
| | |
| |
|