From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: Markus Armbruster <armbru@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
"Daniel P. Berrange" <berrange@redhat.com>,
John Snow <jsnow@redhat.com>
Subject: [Qemu-devel] [PATCH for-2.11 v2 4/5] qmp-shell: Accept QMP command as argument
Date: Tue, 8 Aug 2017 17:39:34 -0300 [thread overview]
Message-ID: <20170808203935.30021-5-ehabkost@redhat.com> (raw)
In-Reply-To: <20170808203935.30021-1-ehabkost@redhat.com>
This is useful for testing QMP commands in scripts.
Example usage, combined with 'jq' for filtering the results:
$ ./scripts/qmp/qmp-shell /tmp/qmp qom-list path=/ | jq -r .return[].name
machine
type
chardevs
backend
$
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Changes v1 -> v2:
* Rewritten using optparse module
---
scripts/qmp/qmp-shell | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 4b9a420..4b7374e 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -400,7 +400,7 @@ def die(msg):
def main():
parser = optparse.OptionParser(description='QMP shell utility')
- parser.set_usage("%prog [options] <UNIX socket path> | <TCP address:port>")
+ parser.set_usage("%prog [options] <UNIX socket path> | <TCP address:port> [COMMAND [ARG=VALUE]...]")
parser.add_option('-v', action='store_true', dest='verbose',
help='Verbose (echo command sent and received)')
parser.add_option('-p', action='store_true', dest='pretty',
@@ -411,10 +411,11 @@ def main():
default=True, help='Skip negotiate (for qemu-ga)')
opts,args = parser.parse_args()
- if len(args) != 1:
+ if len(args) < 1:
parser.print_help(sys.stderr)
sys.exit(1)
addr = args[0]
+ cmdargs = args[1:]
try:
if opts.hmp:
@@ -433,10 +434,13 @@ def main():
except qemu.error:
die('Could not connect to %s' % addr)
- qemu.show_banner()
qemu.set_verbosity(opts.verbose)
- while qemu.read_exec_command(qemu.get_prompt()):
- pass
+ if len(cmdargs):
+ qemu.execute_cmdargs(cmdargs)
+ else:
+ qemu.show_banner()
+ while qemu.read_exec_command(qemu.get_prompt()):
+ pass
qemu.close()
if __name__ == '__main__':
--
2.9.4
next prev parent reply other threads:[~2017-08-08 20:40 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-08 20:39 [Qemu-devel] [PATCH for-2.11 v2 0/5] qmp-shell non-interactive mode, delete scripts/qmp/qmp Eduardo Habkost
2017-08-08 20:39 ` [Qemu-devel] [PATCH for-2.11 v2 1/5] qmp-shell: Use optparse module Eduardo Habkost
2017-08-09 9:17 ` Stefan Hajnoczi
2017-08-15 9:47 ` Markus Armbruster
2017-08-15 9:56 ` Daniel P. Berrange
2017-08-15 20:06 ` Eduardo Habkost
2017-08-18 15:42 ` Stefan Hajnoczi
2017-08-15 9:59 ` Daniel P. Berrange
2017-08-08 20:39 ` [Qemu-devel] [PATCH for-2.11 v2 2/5] qmp-shell: Pass split cmdargs to __build_cmd() Eduardo Habkost
2017-08-08 20:39 ` [Qemu-devel] [PATCH for-2.11 v2 3/5] qmp-shell: execute_cmdargs() method Eduardo Habkost
2017-08-08 20:39 ` Eduardo Habkost [this message]
2017-08-09 9:15 ` [Qemu-devel] [PATCH for-2.11 v2 4/5] qmp-shell: Accept QMP command as argument Stefan Hajnoczi
2017-08-15 10:03 ` Markus Armbruster
2017-08-15 20:39 ` Eduardo Habkost
2017-08-16 6:25 ` Markus Armbruster
2017-08-18 17:05 ` Eduardo Habkost
2017-08-21 9:22 ` Markus Armbruster
2017-08-08 20:39 ` [Qemu-devel] [PATCH for-2.11 v2 5/5] Remove scripts/qmp/qmp Eduardo Habkost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170808203935.30021-5-ehabkost@redhat.com \
--to=ehabkost@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=jsnow@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).