Plugin e1_cmd
Plugin e1_cmd umožňuje používateľovi vytvárať a spravovať perzistentné príkazové shellové sessions priamo z ERPIO One, konkrétne:
- CMD sessions
- PowerShell sessions
Sessions sú:
- perzistentné (bežia dlhodobo),
- uchovávané v pamäti pluginu,
- ich výstup sa priebežne ukladá do internej SQLite databázy,
- môžu prijímať štandardné príkazy (
dir,ping,Get-Process, …), - podporujú aj klávesové vstupy cez „virtuálne stlačenie” (CTRL+C, CTRL+Y, Enter…),
- majú automatické čistenie cez reaper (timeout / neaktivita),
- podporujú vlastné timeouty aj keepalive,
- vedia ukončiť session ručne (e1 kill session).
Plugin je vhodný na:
- diagnostiku,
- skriptovanie,
- CI/CD príkazy,
- spúšťanie agentov alebo dlhých procesov,
- technickú podporu,
- správu infraštruktúry zo systému ERPIO.
Inštalácia pluginu
Stiahnutie pluginu
Prehľad Providerov
Plugin obsahuje dva samostatné poskytovateľské modely:
A) ProviderCMD
Spravuje CMD (Command Prompt) session.
- SysName:
e1_cmd - Popis: Správca perzistentných CMD sessions
- PluginGIDModel: definovaný v plugine
B) ProviderPS
Spravuje PowerShell session.
- SysName:
e1_ps - Popis: Správca perzistentných PowerShell sessions
- PluginGIDModel: definovaný v plugine
Oba providery fungujú identicky, líšia sa iba backend procesom:
| Provider | Backend |
|---|---|
| CMD | cmd.exe |
| PowerShell | powershell.exe |
Parametre providerov
Nižšie sú popísané parametre, ktoré môže používateľ zadať v datasource alebo akcii.
ProviderCMD – Parametre
@CmdIdentificator (povinný)
Identifikátor session, niečo ako názov spojenia.
Príklady:
"test01""deploy_session""diagnostics123"
Ak session s týmto ID ešte neexistuje → vytvorí sa nová.
Ak už existuje → použije sa tá existujúca.
@CmdCommand (voliteľný)
Príkaz, ktorý sa má vykonať v CMD konzole.
Príklady:
| Príkaz | Funkcia |
|---|---|
dir | vypíše zoznam súborov |
ping google.com | ping test |
echo ahoj | textový výstup |
python script.py | spustí python |
Špeciálne príkazy:
1) Ukončenie session
e1 kill session
2) Odoslanie klávesovej skratky
e1 keys CTRL+Y
e1 keys CTRL+C
e1 keys ENTER
@CmdTimeout (voliteľný)
Čas v minútach, po ktorom môže session zaniknúť neaktivitou.
- Ak nie je zadaný → default 15 minút
- Ak je zadaný napr.
5→ session sa ukončí po 5 min nečinnosti - Ak je hodnota 999 → session má KEEPALIVE režim
- nikdy neexpiruje
- reaper ju neukončí
Príklady:
@CmdTimeout = 1 → skončí po minúte
@CmdTimeout = 999 → nesmie nikdy zaniknúť
@CmdTimeout = null → použije sa 15 min default
📌 ProviderPS – Parametre
PowerShell provider má rovnaké parametre, len s PS prefixom:
@PsIdentificator@PsCommand@PsTimeout(999 = KeepAlive)
Používa sa identicky ako CMD provider.
Výstup providerov
Oba providery vracajú tabuľku s rovnakými stĺpcami:
| Stĺpec | Typ | Popis |
|---|---|---|
| SessionId | string | Identifikátor session |
| Output | string | Kompletný textový výstup shellu |
| Updated | DateTime | Dátum a čas získania výstupu |
| CpuPercent | double | Aktuálne percentuálne vyťaženie procesu |
| MemoryMB | double | Spotreba RAM v megabajtoch |
Príklad výsledku:
| SessionId | Output | Updated | CpuPercent | MemoryMB |
|---|---|---|---|---|
| test01 | <výpis cmd> | 2026‑03‑24 13:11 | 14.3 | 42.1 |
❗ Výstup sa priebežne ukladá aj do DB:
SQL tabuľka napr.:
p_e1_cmd_CmdSessions
Každý výpis je uložený spolu s timestampom.
5️⃣ Automatické čistenie sessions (Reaper)
Reaper je interný proces pluginu, ktorý:
- kontroluje sessions v intervale (default 30s, upraviteľné v config)
- ukončí sessions, ktoré sú:
- neaktívne dlhšie ako timeout,
- majú X cyklov neaktivity (default 2),
- nemajú KeepAlive,
- vie použiť aj soft kill (CTRL+C), potom hard kill.
KeepAlive sessions reaper nikdy nezabije.
Soft kill / Hard kill
Soft kill:
- odošle CTRL+C
- počká, či proces skončí
- ak nie → hard kill
Hard kill:
Process.Kill()
Reaper zapisuje do logu:
- soft kill OK
- soft kill fail → hard kill
- session killed by timeout
- session ended unexpectedly
Konfiguračný súbor e1_cmd.config
Súbor sa umiestňuje vedľa:
e1_cmd.dll
e1_cmd.config
Obsah:
XML
<config>
<reaper intervalMs=”30000″ verifyCycles=”2″ />
</config>
Zobraziť viac riadkov
intervalMs
Ako často reaper kontroluje sessions.
verifyCycles
Počet potvrdených kontrol neaktivity pred ukončením.
Ak config neexistuje:
Použije sa interval 30 sekúnd.
Ak používateľ pošle dotaz (GetDataTable) na session, ktorá už neexistuje:
Chovanie pri Session Not Found
- plugin vráti hlášku:
Session does not exist. - zapíše do logu (iba raz):
Session <id> ended unexpectedly
Praktické príklady použitia
Spustenie novej CMD session
@CmdIdentificator = "diag01"
@CmdCommand = "ipconfig"
Výstup sa uloží aj do DB.
Pokračovanie v existujúcej session
@CmdIdentificator = "diag01"
@CmdCommand = "ping erpio.one"
Stále ten istý proces cmd.exe.
Dlhodobá session
@CmdIdentificator = "worker01"
@CmdTimeout = 999
Session nikdy neexpiruje.
Ukončenie session
e1 kill session
Poslanie kláves
e1 keys CTRL+Y
e1 keys ENTER
e1 keys CTRL+C
Monitoring CPU a RAM
Výstup v datasource:
CPU: 12.4%
RAM: 38.12 MB
Pomáha pri ladení, pri agentoch a pri procesoch „zožierajúcich“ RAM.
Zhrnutie výhod pluginu
✔ perzistentné CMD a PowerShell sessions
✔ podpora dlhodobých procesov
✔ KeepAlive režim
✔ soft kill (CTRL+C)
✔ klávesové vstupy
✔ monitoring CPU / RAM
✔ automatické čistenie sessions
✔ logovanie do SQLite
✔ veľmi jednoduché použitie z ERPIO