3.7 KiB
jc.parsers.iptables
jc - JSON CLI output utility iptables
command output parser
Supports -vLn
and --line-numbers
for all tables.
Usage (cli):
$ sudo iptables -L -t nat | jc --iptables
or
$ jc iptables -L -t nat
Usage (module):
import jc result = jc.parse('iptables', iptables_command_output)
or
import jc.parsers.iptables result = jc.parsers.iptables.parse(iptables_command_output)
Schema:
[ { "chain": string, "rules": [ { "num" integer, "pkts": integer, "bytes": integer, # converted based on suffix "target": string, "prot": string, "opt": string, # "--" = Null "in": string, "out": string, "source": string, "destination": string, "options": string } ] } ]
Examples:
$ sudo iptables --line-numbers -v -L -t nat | jc --iptables -p [ {
-
"chain"
- "PREROUTING", -
"rules"
- [ { -
"num"
- 1, -
"pkts"
- 2183, -
"bytes"
- 186000, -
"target"
- "PREROUTING_direct", -
"prot"
- "all", -
"opt"
- null, -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere" }, { -
"num"
- 2, -
"pkts"
- 2183, -
"bytes"
- 186000, -
"target"
- "PREROUTING_ZONES_SOURCE", -
"prot"
- "all", -
"opt"
- null, -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere" }, { -
"num"
- 3, -
"pkts"
- 2183, -
"bytes"
- 186000, -
"target"
- "PREROUTING_ZONES", -
"prot"
- "all", -
"opt"
- null, -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere" }, { -
"num"
- 4, -
"pkts"
- 0, -
"bytes"
- 0, -
"target"
- "DOCKER", -
"prot"
- "all", -
"opt"
- null, -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere", -
"options"
- "ADDRTYPE match dst-type LOCAL" } ] }, ... ]$ sudo iptables --line-numbers -v -L -t nat | jc --iptables -p -r [ {
-
"chain"
- "PREROUTING", -
"rules"
- [ { -
"num"
- "1", -
"pkts"
- "2183", -
"bytes"
- "186K", -
"target"
- "PREROUTING_direct", -
"prot"
- "all", -
"opt"
- "--", -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere" }, { -
"num"
- "2", -
"pkts"
- "2183", -
"bytes"
- "186K", -
"target"
- "PREROUTING_ZONES_SOURCE", -
"prot"
- "all", -
"opt"
- "--", -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere" }, { -
"num"
- "3", -
"pkts"
- "2183", -
"bytes"
- "186K", -
"target"
- "PREROUTING_ZONES", -
"prot"
- "all", -
"opt"
- "--", -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere" }, { -
"num"
- "4", -
"pkts"
- "0", -
"bytes"
- "0", -
"target"
- "DOCKER", -
"prot"
- "all", -
"opt"
- "--", -
"in"
- "any", -
"out"
- "any", -
"source"
- "anywhere", -
"destination"
- "anywhere", -
"options"
- "ADDRTYPE match dst-type LOCAL" } ] }, ... ]
info Objects
class info()
Provides parser metadata (version, author, etc.)
parse
def parse(data, raw=False, quiet=False)
Main text parsing function
Arguments:
data
- (string) text data to parseraw
- (boolean) unprocessed output if Truequiet
- (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
Parser Information
Compatibility: linux
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)