Portál AbcLinuxu, 8. května 2025 02:33

Dotaz: Qemu Guest Agent a socat

24.9.2018 09:43 Peter
Qemu Guest Agent a socat
Přečteno: 298×
Odpovědět | Admin
Dobrý deň vám prajem

Potrebujem v mojom skripte komunikovať s QGA cez socket a jediné čo mi momentálne funguje je nasledovné:
out="$(echo '{"execute":"guest-info"}' | timeout -s SIGKILL 1 socat STDIO,ignoreeof UNIX-CONNECT:qga.sock 2>/dev/null | jq -r ".return" 2>/dev/null)"
Problém je, že keď nepridám k STDIO parameter ignoreeof, tak socat hneď skončí a na "výstupe" nemám nič. Na druhej strane ale s ignoreeof samozrejme socat čaká na ďalšie dáta a neukončí sa, teda preto tam mám ten timeout. Dočítal som sa niečo o parametry escape, ktorý by asi mal qemu posielať po odoslaní dát na ukončenie, ale jak googlim, tak googlim - proste nič rozumné sa neviem dopátrať.

Moja otázka teda znie - ako donútiť aby socat fungoval v "štýle": otázka, odpoveď, koniec

Za pomoc vám vopred ďakujem.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.9.2018 15:45 debian+
Rozbalit Rozbalit vše Re: Qemu Guest Agent a socat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kukni si man socat (je to sada 3 vzajomne suvisiacich programov) a najdi si na nete priklad ako to pouzit (komunikovat cez socket z bash).
25.9.2018 09:29 Peter
Rozbalit Rozbalit vše Re: Qemu Guest Agent a socat
Hmmmm - nič v zlom, ale rada dosť zbytočná
25.9.2018 15:07 NN
Rozbalit Rozbalit vše Re: Qemu Guest Agent a socat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Trochu jinou metodou:
exec 3 <> /tmp/qga.sock
echo '{"execute":"guest-info"}' > &3
while read LINE < &3
do
  echo "$LINE"
done
exec 3 > &-

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.