vrcx: i18n (en/ru), config.ini, clickable update check, prettier README

Adds first-run language prompt + persistent config.ini with bilingual
inline comments. Update check now returns just the tag; app.py renders
it as a clickable [link=...] in the header (matches dhcpsrv/netswitch
pattern). Strips all 'made by engelgardt' lines.

- new dev/src/vrcx/i18n.py (RU/EN translation table)
- new dev/src/vrcx/config.py (config.ini next to the exe)
- update_check.py: returns tag, no console writes
- app.py: load config, set lang, render clickable header, use config
  defaults for BMC/SDS user and parallel_hosts; pass cfg.ping_sweep to
  discover_sds_ip
- ui.py: all visible strings via t()
- README.md / README.ru.md: rewritten under the vrcx name and brief
This commit is contained in:
Engelgardt23
2026-05-18 17:57:29 +03:00
parent 93cc775e80
commit b923b9ebe7
11 changed files with 713 additions and 109 deletions
+99
View File
@@ -0,0 +1,99 @@
# vrcx
[![Последний релиз](https://img.shields.io/github/v/release/Engelgardt23/vrcx?include_prereleases&label=release)](https://github.com/Engelgardt23/vrcx/releases/latest)
[![Сборка](https://img.shields.io/github/actions/workflow/status/Engelgardt23/vrcx/release.yml?label=build)](https://github.com/Engelgardt23/vrcx/actions)
[![Лицензия: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Язык: en \| ru](https://img.shields.io/badge/lang-en%20%7C%20ru-blue)](#)
[🇺🇸 English](README.md) | 🇷🇺 Русский
**vrcx***Vegman Remote Collect (расширенный)*. Портативная замена штатного YADRO `VRC.exe`: вытаскивает диагностические логи с сервера Vegman **и**, по желанию, с сервисной ОС SDS — параллельно, в единый архив, готовый отправить в саппорт.
Штатный VRC ходит только в BMC. На реальных инцидентах саппорту почти всегда нужны ещё и логи с ОС (`lsiget`, `storcli`, `smartctl`, journal). С vrcx это **один двойной клик** вместо беготни с флешкой.
---
## Что делает
- Параллельно опрашивает **N BMC**. Внутри каждого хоста — ещё одна SSH-сессия в сервисную ОС SDS, обе ветки идут одновременно.
- IP SDS определяет сам: спрашивает у BMC по Redfish MAC хостового порта, ищет его в ARP-таблице ноутбука (предварительно прогревая её `/24`-пинг-свипом).
- Каждый хост получает свои подпапки `bmc/` и `os/`; готовые архивы складываются в общий `archives/`, а вся сессия упаковывается во внешний tar.gz одним кликом.
- Если `Собирать ещё и логи с ОС? — нет` — получается набор файлов 1:1 совместимый с маршрутом саппорта по штатному VRC.
## Скачать
Последний релиз: [**страница релизов**](https://github.com/Engelgardt23/vrcx/releases/latest).
Архив: `vrcx-portable-vX.Y.Z.zip`.
## Запуск
1. Распакуй куда угодно.
2. Двойной клик по `vrcx.exe`. При первом запуске выбери язык; выбор сохраняется в `config.ini` рядом с exe.
3. Вставь один или несколько IP-адресов **BMC** через пробел, запятую или с новой строки. Заверши ввод пустой строкой.
4. Введи логин BMC (по умолчанию `admin`) и пароль.
5. Ответь на **Собирать ещё и логи с ОС?** — если `да`, введи логин/пароль SDS (по умолчанию `sds`/`sds`). vrcx сам найдёт IP SDS через Redfish→ARP; если не нашёл — спросит руками.
6. Смотри живую таблицу: каждая строка показывает `BMC ok/total | OS ok/total` пока идёт сбор.
`Ctrl+C` — прерывание, неполная сессия удаляется.
## Структура вывода
```
out/<ДДММГГГГ_ЧЧММСС>/
├── <bmc_ip>/
│ ├── bmc/ команды для BMC (inventory, sensors, sellog, Redfish, …)
│ └── os/ команды для SDS (lsiget, storcli, smartctl, journal, …)
├── <bmc_ip_2>/
│ ├── bmc/
│ └── os/
├── archives/
│ ├── dump_<bmc_ip>.tar.gz
│ └── dump_<bmc_ip_2>.tar.gz
├── vrc.log
└── err_out.log
out/<ДДММГГГГ_ЧЧММСС>.tar.gz ← готовый бандл для саппорта
```
## Конфигурация
`config.ini` лежит рядом с exe и создаётся при первом запуске. Каждая опция снабжена комментарием (EN + RU). Что можно крутить:
| Секция | Ключ | Дефолт | Что делает |
|--- |--- |--- |--- |
| `General` | `language` | (спросит) | `en` / `ru` |
| `BMC` | `default_user` | `admin` | Enter на вопросе логина BMC примет это значение |
| `OS` | `collect_by_default` | `no` | Сразу включать «Собирать ещё и логи с ОС?» как «да» |
| `OS` | `default_user` | `sds` | Логин SDS по умолчанию |
| `Discovery` | `ping_sweep` | `yes` | Прогревать ARP-таблицу `/24`-пингом, если IP SDS неизвестен |
| `Run` | `parallel_hosts` | `8` | Макс. количество BMC, опрашиваемых параллельно |
## Что собирает
| Источник | Откуда |
|---|---|
| **BMC** | Таблица в [`commands.py`](dev/src/vrcx/commands.py): команды YADRO CLI (`bmc info version`, `lsinventory -j`, `health logs show sellog`), `journalctl`-юниты, чтение файлов (`/proc/cpuinfo`, `/etc/os-release`, …), Redfish `/redfish/v1/Systems`. |
| **SDS (ОС)** | Таблица в [`os_commands.py`](dev/src/vrcx/os_commands.py): `lsigetlinux.sh`, `storcli64 /call show all`, `nvme list`, `smartctl -x` по каждому диску, `dmidecode`, `dmesg -T`, `journalctl -b`, `/var/log/messages`, `lspci`, `lsblk`. |
Добавить новый артефакт — одна строка в нужной таблице.
## Совместимость
- Структура вывода повторяет VRC v1.1b — маршрут саппорта по BMC-части не меняется.
- Цель: серверы YADRO Vegman с OpenBMC + сервисная ОС SDS (база CentOS Stream 10).
- Хост: Windows 10 / 11. Python ни на ноутбуке, ни на сервере не нужен.
## Сборка из исходников
```
git clone https://github.com/Engelgardt23/vrcx.git
cd vrcx
python -m pip install rich paramiko pyinstaller
python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py
```
Раскладка репозитория (`dev/` / `prod/` / `old/`) и релизный flow описаны в [`CONTRIBUTING.md`](CONTRIBUTING.md).
## Лицензия
MIT — см. [LICENSE](LICENSE).