Add hardware info in system

This commit is contained in:
2026-02-08 00:06:29 +03:00
parent e10d5f10ab
commit 3fa7821d08
3 changed files with 50 additions and 3 deletions

View File

@@ -4,7 +4,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardMarkup, InlineKe
from app import dp, cfg from app import dp, cfg
from auth import is_admin_msg from auth import is_admin_msg
from keyboards import system_kb from keyboards import system_kb
from system_checks import security, disks from system_checks import security, disks, hardware
from services.http_checks import get_url_checks, check_url from services.http_checks import get_url_checks, check_url
from services.queue import enqueue from services.queue import enqueue
from services.updates import list_updates, apply_updates from services.updates import list_updates, apply_updates
@@ -113,6 +113,12 @@ async def reboot_request(msg: Message):
await msg.answer("⚠️ Confirm reboot?", reply_markup=kb) await msg.answer("⚠️ Confirm reboot?", reply_markup=kb)
@dp.message(F.text == "🧱 Hardware")
async def hw(msg: Message):
if is_admin_msg(msg):
await msg.answer(hardware(), reply_markup=system_kb)
def _updates_kb(page: int, total_pages: int) -> InlineKeyboardMarkup: def _updates_kb(page: int, total_pages: int) -> InlineKeyboardMarkup:
buttons = [] buttons = []
if total_pages > 1: if total_pages > 1:

View File

@@ -57,8 +57,7 @@ system_kb = ReplyKeyboardMarkup(
[KeyboardButton(text="💽 Disks"), KeyboardButton(text="🔐 Security")], [KeyboardButton(text="💽 Disks"), KeyboardButton(text="🔐 Security")],
[KeyboardButton(text="🌐 URLs"), KeyboardButton(text="📈 Metrics")], [KeyboardButton(text="🌐 URLs"), KeyboardButton(text="📈 Metrics")],
[KeyboardButton(text="📦 Updates"), KeyboardButton(text="⬆️ Upgrade")], [KeyboardButton(text="📦 Updates"), KeyboardButton(text="⬆️ Upgrade")],
[KeyboardButton(text="🔄 Reboot")], [KeyboardButton(text="🧱 Hardware"), KeyboardButton(text="🔄 Reboot"), KeyboardButton(text="⬅️ Назад")],
[KeyboardButton(text="⬅️ Назад")],
], ],
resize_keyboard=True, resize_keyboard=True,
) )

View File

@@ -1,4 +1,5 @@
import subprocess import subprocess
import os
def _cmd(cmd: str) -> str: def _cmd(cmd: str) -> str:
@@ -144,3 +145,44 @@ def disks() -> str:
lines.append(f"{icon} {d}{health}, 🌡 {temp}") lines.append(f"{icon} {d}{health}, 🌡 {temp}")
return "\n".join(lines) return "\n".join(lines)
def hardware() -> str:
cpu_model = "n/a"
try:
with open("/proc/cpuinfo", "r") as f:
for line in f:
if line.lower().startswith("model name"):
cpu_model = line.split(":", 1)[1].strip()
break
except Exception:
pass
mem_total = "n/a"
swap_total = "n/a"
try:
with open("/proc/meminfo", "r") as f:
for line in f:
if line.startswith("MemTotal:"):
mem_kb = int(line.split()[1])
mem_total = f"{mem_kb / (1024**2):.2f} GiB"
if line.startswith("SwapTotal:"):
swap_kb = int(line.split()[1])
swap_total = f"{swap_kb / (1024**2):.2f} GiB"
except Exception:
pass
cores = os.cpu_count() or "n/a"
uname = os.uname()
lines = [
"🧱 Hardware",
"",
f"🧠 CPU: {cpu_model}",
f"🧩 Cores: {cores}",
f"💾 RAM: {mem_total}",
f"🌀 Swap: {swap_total}",
f"🧬 Arch: {uname.machine}",
f"🐧 Kernel: {uname.release}",
]
return "\n".join(lines)