Итак, есть скрипт на Python, позволяющий подключиться к монитору QEMU из обычной оболочки. Мне пришлось скачать куча файлов из дерева исходников QEMU, и добавить -qmp unix:./qmp-sock,server,nowait
в командную строку vm. Он подключается, но я не могу заставить его работать.
$ qmp-shell qmp-sock
Welcome to the QMP low-level shell!
Connected to QEMU 1.5.3
(QEMU) help
{u'error': {u'class': u'CommandNotFound', u'desc': u'The command help has not been found'}}
(QEMU) query-
query-balloon query-fdsets query-status
query-block query-kvm query-target
query-block-jobs query-machines query-tpm
query-blockstats query-mice query-tpm-models
query-chardev query-migrate query-tpm-types
query-command-line-options query-migrate-cache-size query-uuid
query-commands query-migrate-capabilities query-version
query-cpu-definitions query-name query-vnc
query-cpus query-pci
query-events query-spice
(QEMU) query-kvm
{u'return': {u'enabled': True, u'present': True}}
(QEMU) info block
Error while parsing command line: list index out of range
command format: <command-name> [arg-name1=arg1] ... [arg-nameN=argN]
(QEMU) info
{u'error': {u'class': u'CommandNotFound', u'desc': u'The command info has not been found'}}
(QEMU) exit
{u'error': {u'class': u'CommandNotFound', u'desc': u'The command exit has not been found'}}
(QEMU)
Предполагая, что qmp-shell
работает так же, как, скажем, телнетинг в сокет QMP и прямая отправка команд JSON, вам нужно выполнить qmp_capabilities
команда. Ни одна из других команд в qmp
будет работать до тех пор, пока не будет выполнен, и приведет к ошибке «CommandNotFound».
См. Страницу qemu wiki относительно QMP для подробностей.