2019-11-11 18:30:46 -08:00
|
|
|
# jc.parsers.iptables
|
|
|
|
jc - JSON CLI output utility ipables Parser
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
Specify --iptables as the first argument if the piped input is coming from iptables
|
|
|
|
|
2019-11-12 07:03:02 -08:00
|
|
|
Supports -vLn and --line-numbers for all tables
|
2019-11-11 18:30:46 -08:00
|
|
|
|
|
|
|
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"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
...
|
|
|
|
]
|
|
|
|
|
|
|
|
## process
|
|
|
|
```python
|
|
|
|
process(proc_data)
|
|
|
|
```
|
|
|
|
|
2019-11-12 11:28:10 -08:00
|
|
|
Final processing to conform to the schema.
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2019-11-13 08:04:40 -08:00
|
|
|
proc_data: (dictionary) raw structured data to process
|
2019-11-12 11:28:10 -08:00
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
dictionary structured data with the following schema:
|
2019-11-11 18:30:46 -08:00
|
|
|
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"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
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
## parse
|
|
|
|
```python
|
|
|
|
parse(data, raw=False, quiet=False)
|
|
|
|
```
|
|
|
|
|
2019-11-12 11:18:00 -08:00
|
|
|
Main text parsing function
|
2019-11-11 18:30:46 -08:00
|
|
|
|
2019-11-12 11:18:00 -08:00
|
|
|
Parameters:
|
2019-11-11 18:30:46 -08:00
|
|
|
|
2019-11-12 11:18:00 -08:00
|
|
|
data: (string) text data to parse
|
|
|
|
raw: (boolean) output preprocessed JSON if True
|
|
|
|
quiet: (boolean) suppress warning messages if True
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
dictionary raw or processed structured data
|
2019-11-11 18:30:46 -08:00
|
|
|
|