# vrcx [![Latest release](https://img.shields.io/github/v/release/Engelgardt23/vrcx?include_prereleases&label=release)](https://github.com/Engelgardt23/vrcx/releases/latest) [![Build](https://img.shields.io/github/actions/workflow/status/Engelgardt23/vrcx/release.yml?label=build)](https://github.com/Engelgardt23/vrcx/actions) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Lang: en \| ru](https://img.shields.io/badge/lang-en%20%7C%20ru-blue)](#) πŸ‡ΊπŸ‡Έ English | [πŸ‡·πŸ‡Ί Русский](README.ru.md) **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/vrcx/releases/latest). The asset is `vrcx-portable-vX.Y.Z.zip`. ## Run 1. Unzip anywhere. 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 and removes the incomplete session folder. ## Output ``` out// β”œβ”€β”€ / β”‚ β”œβ”€β”€ bmc/ BMC commands (inventory, sensors, sellog, Redfish, …) β”‚ └── os/ SDS host commands (lsiget, storcli, smartctl, journal, …) β”œβ”€β”€ / β”‚ β”œβ”€β”€ bmc/ β”‚ └── os/ β”œβ”€β”€ archives/ β”‚ β”œβ”€β”€ dump_.tar.gz β”‚ └── dump_.tar.gz β”œβ”€β”€ vrc.log └── err_out.log out/.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 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 vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py ``` See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the full repo layout (`dev/` / `prod/` / `old/`) and release flow. ## License MIT β€” see [LICENSE](LICENSE).