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
99 lines
5 KiB
Markdown
99 lines
5 KiB
Markdown
# vrcx
|
|
|
|
[](https://github.com/Engelgardt23/vrcx/releases/latest)
|
|
[](https://github.com/Engelgardt23/vrcx/actions)
|
|
[](LICENSE)
|
|
[](#)
|
|
|
|
🇺🇸 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/<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 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).
|