dbus-pcap: Put json output behind --json option
That way we get the pretty output to eyeball by default.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I5c85033792684180a4dc5c1682ed67c1f34cffb6
diff --git a/amboar/obmc-scripts/dbus-pcap/dbus-pcap b/amboar/obmc-scripts/dbus-pcap/dbus-pcap
index 86c1493..3e54712 100755
--- a/amboar/obmc-scripts/dbus-pcap/dbus-pcap
+++ b/amboar/obmc-scripts/dbus-pcap/dbus-pcap
@@ -3,11 +3,11 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2019 IBM Corp.
+from argparse import ArgumentParser
from itertools import islice, cycle
from collections import namedtuple
from enum import Enum
from scapy.all import rdpcap
-import sys
import struct
import json
@@ -388,11 +388,22 @@
raise TypeError
def main():
- stream = rdpcap(sys.argv[1])
- matchers = [] if len(sys.argv) < 3 else parse_match_rules(sys.argv[2:])
+ parser = ArgumentParser()
+ parser.add_argument("--json", action="store_true",
+ help="Emit a JSON representation of the messages")
+ parser.add_argument("file", help="The pcap file")
+ parser.add_argument("expressions", nargs="*",
+ help="DBus message match expressions")
+ args = parser.parse_args()
+ stream = rdpcap(args.file)
+ matchers = parse_match_rules(args.expressions)
try:
- for msg in parse_session(stream, matchers):
- print(json.dumps(msg, default=packetconv))
+ if args.json:
+ for msg in parse_session(stream, matchers):
+ print(json.dumps(msg, default=packetconv))
+ else:
+ for msg in parse_session(stream, matchers):
+ print(msg)
except BrokenPipeError:
pass