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:
@@ -1,48 +1,98 @@
|
||||
# bmccollect
|
||||
# vrcx
|
||||
|
||||
[](https://github.com/Engelgardt23/bmccollect/releases/latest)
|
||||
[](https://github.com/Engelgardt23/vrcx/releases/latest)
|
||||
[](https://github.com/Engelgardt23/vrcx/actions)
|
||||
[](LICENSE)
|
||||
[](#)
|
||||
|
||||
A portable collector of YADRO BMC diagnostic logs. Re-implementation of the original VRC tool, packaged as a maintainable Python project — same output structure expected by YADRO support, but readable source, modular layout, CI-built releases.
|
||||
🇺🇸 English | [🇷🇺 Русский](README.ru.md)
|
||||
|
||||
> **Made by engelgardt.**
|
||||
**vrcx** — *Vegman Remote Collect (extended)*. A portable, scripted replacement for YADRO's `VRC.exe` that pulls diagnostic logs from a Vegman server **and** (optionally) from its SDS service OS, in parallel, into a single archive ready to send to support.
|
||||
|
||||
The original VRC only touches the BMC. In real incidents support almost always asks for OS-side logs too (`lsiget`, `storcli`, `smartctl`, journals). With vrcx that's one double-click instead of a USB-stick run.
|
||||
|
||||
---
|
||||
|
||||
## What it does
|
||||
|
||||
- Connects to **N BMCs in parallel**. Per host, also opens a **second** SSH session to the SDS service OS and runs both branches concurrently.
|
||||
- SDS IP is discovered automatically: vrcx asks the BMC over Redfish for the host NIC's MAC, then matches it against the laptop's ARP table (warming it with a quick `/24` ping-sweep when needed).
|
||||
- Each host gets a clean `bmc/` and `os/` sub-folder; all per-host tarballs land in a shared `archives/` folder and an outer bundle wraps the whole session.
|
||||
- BMC-only mode (when *Collect OS logs too?* is answered *no*) produces an artefact set 1:1 compatible with the original VRC support flow.
|
||||
|
||||
## Download
|
||||
|
||||
Grab the latest release: [**releases page**](https://github.com/Engelgardt23/bmccollect/releases/latest).
|
||||
The asset is `bmccollect-portable-vX.Y.Z.zip`.
|
||||
Grab the latest release: [**releases page**](https://github.com/Engelgardt23/vrcx/releases/latest).
|
||||
The asset is `vrcx-portable-vX.Y.Z.zip`.
|
||||
|
||||
## Run
|
||||
|
||||
1. Unzip anywhere.
|
||||
2. Double-click `bmccollect.exe`.
|
||||
3. Paste one or more BMC IPs (whitespace / comma / newline separated). End input with an empty line.
|
||||
4. Enter username (default `admin`) and password.
|
||||
5. Watch the live progress table while the tool collects each BMC in parallel.
|
||||
6. When it's done you get a single `out/<DDMMYYYY_HHMMSS>/<stamp>.tar.gz` ready to send to support.
|
||||
2. Double-click `vrcx.exe`. On the very first launch pick a language; the choice is saved into `config.ini` next to the exe.
|
||||
3. Paste one or more **BMC** IPs (whitespace, comma, or newline separated). End input with an empty line.
|
||||
4. Enter the BMC user (default `admin`) and password.
|
||||
5. Answer **Collect OS logs too?** — if `yes`, enter SDS user/password (defaults `sds`/`sds`). vrcx will discover each SDS IP via Redfish→ARP, falling back to a manual prompt when needed.
|
||||
6. Watch the live progress table — each row shows `BMC ok/total | OS ok/total` while collection runs.
|
||||
|
||||
`Ctrl+C` aborts. The output folder is kept regardless — you can pack it manually if needed.
|
||||
`Ctrl+C` aborts and removes the incomplete session folder.
|
||||
|
||||
## What it collects
|
||||
## Output
|
||||
|
||||
For each BMC: `inventory.json`, `lsinventory.json`, `sensors.log`, `sellog.log`, `bmc-state.txt`, `host-state.txt`, `bmc-net-cfg.log`, `cpuinfo`, `meminfo`, `osrelease`, `disk-usage.log`, `failed-services.log`, `top.log`, `bmc-journal_full_date.log`, journals for `obmc-console` and `obmc-yadro-vrm-setter`, a Redfish `/redfish/v1/Systems` dump, and others — see [`commands.py`](src/bmccollect/commands.py) for the full command table. Adding a new artefact is one line in that table.
|
||||
```
|
||||
out/<DDMMYYYY_HHMMSS>/
|
||||
├── <bmc_ip>/
|
||||
│ ├── bmc/ BMC commands (inventory, sensors, sellog, Redfish, …)
|
||||
│ └── os/ SDS host commands (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/<DDMMYYYY_HHMMSS>.tar.gz ← one-click bundle for support
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
`config.ini` lives next to the exe and is created on first run. Every option carries an inline description (EN + RU). Typical knobs:
|
||||
|
||||
| Section | Key | Default | What |
|
||||
|--- |--- |--- |--- |
|
||||
| `General` | `language` | (asked) | `en` / `ru` |
|
||||
| `BMC` | `default_user` | `admin` | Hit Enter on the BMC user prompt to accept this |
|
||||
| `OS` | `collect_by_default` | `no` | Pre-tick the *Collect OS logs too?* answer |
|
||||
| `OS` | `default_user` | `sds` | Default SDS user |
|
||||
| `Discovery` | `ping_sweep` | `yes` | Warm the ARP table with a `/24` ping-sweep when SDS IP is unknown |
|
||||
| `Run` | `parallel_hosts` | `8` | Max BMCs collected in parallel |
|
||||
|
||||
## What gets collected
|
||||
|
||||
| Side | Where it comes from |
|
||||
|---|---|
|
||||
| **BMC** | Per-spec table in [`commands.py`](dev/src/vrcx/commands.py): BMC CLI commands (`bmc info version`, `lsinventory -j`, `health logs show sellog`), `journalctl` units, file reads (`/proc/cpuinfo`, `/etc/os-release`, …), Redfish `/redfish/v1/Systems`. |
|
||||
| **SDS host** | Per-spec table in [`os_commands.py`](dev/src/vrcx/os_commands.py): `lsigetlinux.sh`, `storcli64 /call show all`, `nvme list`, `smartctl -x` per drive, `dmidecode`, `dmesg -T`, `journalctl -b`, `/var/log/messages`, `lspci`, `lsblk`. |
|
||||
|
||||
Adding a new artefact = one line in the relevant table.
|
||||
|
||||
## Compatibility
|
||||
|
||||
- Output structure mirrors VRC v1.1b — YADRO support flow is unchanged.
|
||||
- Tested against `vegman-sx20` BMC firmware.
|
||||
- Windows 10 / 11 host (the only place this tool runs).
|
||||
- Output structure mirrors VRC v1.1b — YADRO support flow is unchanged for the BMC side.
|
||||
- Targets: YADRO Vegman servers with OpenBMC + the SDS service OS (CentOS Stream 10 base).
|
||||
- Host: Windows 10 / 11. No Python required on the laptop or on the server.
|
||||
|
||||
## Build from source
|
||||
|
||||
```
|
||||
git clone https://github.com/Engelgardt23/vrcx.git
|
||||
cd vrcx
|
||||
python -m pip install rich paramiko pyinstaller
|
||||
python -m PyInstaller --onefile --console --name bmccollect --paths src bmccollect-launcher.py
|
||||
python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py
|
||||
```
|
||||
|
||||
See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the full layout and release flow.
|
||||
See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the full repo layout (`dev/` / `prod/` / `old/`) and release flow.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Reference in New Issue
Block a user