Damien Hedde <damien.he...@greensocs.com> writes: > On 2/22/22 07:10, Markus Armbruster wrote: >> Damien Hedde <damien.he...@greensocs.com> writes: >> >>> Hi, >>> >>> The main idea of this series is to be a bit more user-friendly when >>> using qmp-shell in a non-interactive way: with an input redirection >>> from a file containing a list of commands. >>> >>> I'm working on dynamic qapi config of a qemu machine, this would >>> be very useful to provide and reproduce small examples. >> Why not use plain QMP for that? >> [...] >> > What do you mean by plain QMP ?
Talk straight to QEMU without a translator: $ cat script {"execute": "qmp_capabilities"} {"execute": "quit"} $ socat -t 3 STDIO UNIX-CONNECT:$HOME/work/images/test-qmp <script {"QMP": {"version": {"qemu": {"micro": 50, "minor": 2, "major": 6}, "package": "v6.2.0-1603-gc13b8e9973"}, "capabilities": ["oob"]}} {"error": {"class": "CommandNotFound", "desc": "Expecting capabilities negotiation with 'qmp_capabilities'"}} armbru@dusky:~/work/qemu$ echo -e '{"execute":"qmp_capabilities"}{"execute":"quit"}' >script armbru@dusky:~/work/qemu$ echo -e '{"execute":"qmp_capabilities"}\n{"execute":"quit"}' >script armbru@dusky:~/work/qemu$ socat -t 3 STDIO UNIX-CONNECT:$HOME/work/images/test-qmp <script {"QMP": {"version": {"qemu": {"micro": 50, "minor": 2, "major": 6}, "package": "v6.2.0-1603-gc13b8e9973"}, "capabilities": ["oob"]}} {"return": {}} {"return": {}} {"timestamp": {"seconds": 1645523438, "microseconds": 951702}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} socat also supports interactive use nicely. Try $ socat "READLINE,history=$HOME/.qmp_history,prompt=QMP>" UNIX-CONNECT:$HOME/path/to/socket Helpfully blinks matching parenthesis for me.