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:

ProviderBackend
CMDcmd.exe
PowerShellpowershell.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íkazFunkcia
dirvypíše zoznam súborov
ping google.comping test
echo ahojtextový výstup
python script.pyspustí 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ĺpecTypPopis
SessionIdstringIdentifikátor session
OutputstringKompletný textový výstup shellu
UpdatedDateTimeDátum a čas získania výstupu
CpuPercentdoubleAktuálne percentuálne vyťaženie procesu
MemoryMBdoubleSpotreba RAM v megabajtoch

Príklad výsledku:

SessionIdOutputUpdatedCpuPercentMemoryMB
test01<výpis cmd>2026‑03‑24 13:1114.342.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