Požadavek shell
Účel a dopady
Spustí příkaz v shellu operačního systému serveru (command), nebo – je-li uveden id místo command – vyzvedne výsledek dříve spuštěného asynchronního příkazu.
Dostupnost, kontext, oprávnění apod.
- Vyžaduje
r_admin. - Spuštění nového příkazu je navíc omezeno konfigurovaným seznamem povolených příkazů serveru. Příkaz, který neodpovídá žádnému nakonfigurovanému vzoru, je zamítnut jako nepovolený; výjimkou jsou interní systémové kontexty bez
userida vývojové sestavení bez nakonfigurovaných shellů. - Podléhá standardnímu transakčnímu zpracování obálky
<request>.
XML požadavek (syntax + popis)
<request>
<shell
id="{number}"
valid="{bool}"
codepage="{string}"
encode="hex|base64|url|xml|json|raw"
exit-code="{number}"
command="{string}"
call="sync|async|detach"
join-output="{bool}"
no-output="{bool}"
survive="{bool}"
timeout="{number}"
retrieve-timeout="{number}"
out-buffer-size="{number}"
err-buffer-size="{number}"
input-encoding="hex|base64|xml|url|json"
>
{vstupní data pro standardní vstup programu}
</shell>
</request>
Parametry a pravidla (atributy, potomci)
Požadavek má dva režimy, rozlišené přítomností id:
Režim vyzvednutí výsledku (id uveden)
id- Identifikátor dříve spuštěného asynchronního příkazu. (typ:number; povinný v tomto režimu)valid- Je-li"false", výsledek se po vyzvednutí ponechá k dalšímu dotazu; jinak (výchozí) se považuje za vyzvednutý. (typ:bool; nepovinný) – v dosavadní dokumentaci zcela chyběl.codepage,encode,exit-code- Lze dodatečně přenastavit i při pouhém vyzvednutí výsledku (ovlivní, jak se výsledek zakóduje do odpovědi). (nepovinné)
Režim spuštění příkazu (command uveden)
command- Příkaz včetně případných parametrů; prázdný nebo nepovolený (viz oprávnění výše) → chyba. (typ:string; povinný)call-sync(výchozí)|async|detach. (typ:enum; nepovinný)join-output- Sloučit standardní a chybový výstup. (typ:bool; nepovinný; výchozí:false)no-output- Nevracet standardní výstup. (typ:bool; nepovinný; výchozí:false)survive- Přežije zastavení serveru (jencall="async"). (typ:bool; nepovinný; výchozí:false)timeout- Max. doba běhu v sekundách. (typ:number; nepovinný; výchozí:30) – dosavadní dokumentace uváděla výchozí0(nekonečno); ve skutečnosti je výchozí30.retrieve-timeout- Max. doba čekání na vyzvednutí výsledku ucall="async". (typ:number; nepovinný)out-buffer-size,err-buffer-size- Velikost bufferů pro čtení výstupů. (typ:number; nepovinné)codepage-utf8|utf16|acp|oem|číslo kódové stránky. (typ:string; nepovinný)encode- Kódování vrácených výstupů:hex|base64|url|xml|json; jiná/chybějící hodnota =raw(bez úpravy). (typ:enum; nepovinný; výchozí:raw)exit-code- Návratový kód považovaný za úspěch. (typ:number; nepovinný)input-encoding- Kódování obsahu (textu/potomků) posílaného na standardní vstup: rozpoznávané prefixyhex,base64,xml(XML escape dekódování),url(URL dekódování),json(převod z interního JSON-XML do JSON). (typ:string; nepovinný) – dosavadní dokumentace uvádělautf8/utf16/acp/číslo kódové stránky, tyto hodnoty však tento atribut nerozpoznává.
Potomek: obsah uzlu <shell> (prostý text nebo vnořené XML) se pošle jako standardní vstup spouštěného programu podle input-encoding.
Příklady požadavku
(Zatím bez ověřeného příkladu.)
Zpracování a vedlejší účinky
- V
call="detach"server nemá o programu žádnou informaci po jeho spuštění – nelze vyzvednout výstup ani aplikovat timeout. - V
call="async"se vracíid, kterým lze později (tímto požadavkem s atributemid) vyzvednout výsledek; poretrieve-timeoutje výsledek zapomenut.
XML odpověď (syntax + popis)
<response>
<shell
status="ok|fail|running|detached|killed|not-found|error"
id="{number}"
detail="{string}"
>
<output ... /> ?
<error ... /> ?
</shell>
</response>
Příklady odpovědi
(Zatím bez ověřeného příkladu.)
Chyby a reakce
status="error" detail="Neplatne id"– v režimu vyzvednutí jeidchybějící/neplatné/0.status="not-found" id="{id}"– zadanéidneodpovídá běžícímu ani dokončenému příkazu.status="running" id="{id}"– příkaz vcall="async"stále běží.status="error" detail="Nepovoleny prikaz"–commandje prázdný nebo neodpovídá konfigurovanému seznamu povolených příkazů.- Nedostatečné oprávnění má odpověď
<shell status="error" detail="Nemate patricna opravneni"/>.