2019-11-13 07:45:37 -08:00
|
|
|
# jc.parsers.ss
|
|
|
|
jc - JSON CLI output utility ss Parser
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
specify --ss as the first argument if the piped input is coming from ss
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
$ sudo ss -a | jc --ss -p
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"netid": "nl",
|
|
|
|
"state": "UNCONN",
|
|
|
|
"recv_q": 0,
|
|
|
|
"send_q": 0,
|
|
|
|
"local_address": "rtnl",
|
|
|
|
"local_port": "kernel",
|
|
|
|
"peer_address": "*"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "nl",
|
|
|
|
"state": "UNCONN",
|
|
|
|
"recv_q": 0,
|
|
|
|
"send_q": 0,
|
|
|
|
"local_address": "rtnl",
|
|
|
|
"local_port": "systemd-resolve/893",
|
|
|
|
"peer_address": "*"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "nl",
|
|
|
|
"state": "UNCONN",
|
|
|
|
"recv_q": 0,
|
|
|
|
"send_q": 0,
|
|
|
|
"local_address": "rtnl",
|
|
|
|
"local_port": "systemd/1",
|
|
|
|
"peer_address": "*"
|
|
|
|
},
|
|
|
|
...
|
|
|
|
{
|
|
|
|
"netid": "tcp",
|
|
|
|
"state": "LISTEN",
|
|
|
|
"recv_q": 0,
|
|
|
|
"send_q": 128,
|
|
|
|
"local_address": "127.0.0.1",
|
|
|
|
"local_port": "35485",
|
|
|
|
"peer_address": "0.0.0.0",
|
|
|
|
"peer_port": "*",
|
|
|
|
"interface": "lo"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "tcp",
|
|
|
|
"state": "LISTEN",
|
|
|
|
"recv_q": 0,
|
|
|
|
"send_q": 128,
|
|
|
|
"local_address": "[::]",
|
|
|
|
"local_port": "ssh",
|
|
|
|
"peer_address": "[::]",
|
|
|
|
"peer_port": "*"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "v_str",
|
|
|
|
"state": "ESTAB",
|
|
|
|
"recv_q": 0,
|
|
|
|
"send_q": 0,
|
|
|
|
"local_address": "999900439",
|
|
|
|
"local_port": "1023",
|
|
|
|
"peer_address": "0",
|
|
|
|
"peer_port": "976",
|
|
|
|
"local_port_num": 1023,
|
|
|
|
"peer_port_num": 976
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
$ sudo ss -a | jc --ss -p -r
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"netid": "nl",
|
|
|
|
"state": "UNCONN",
|
|
|
|
"recv_q": "0",
|
|
|
|
"send_q": "0",
|
|
|
|
"local_address": "rtnl",
|
|
|
|
"local_port": "kernel",
|
|
|
|
"peer_address": "*"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "nl",
|
|
|
|
"state": "UNCONN",
|
|
|
|
"recv_q": "0",
|
|
|
|
"send_q": "0",
|
|
|
|
"local_address": "rtnl",
|
|
|
|
"local_port": "systemd-resolve/893",
|
|
|
|
"peer_address": "*"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "nl",
|
|
|
|
"state": "UNCONN",
|
|
|
|
"recv_q": "0",
|
|
|
|
"send_q": "0",
|
|
|
|
"local_address": "rtnl",
|
|
|
|
"local_port": "systemd/1",
|
|
|
|
"peer_address": "*"
|
|
|
|
},
|
|
|
|
...
|
|
|
|
{
|
|
|
|
"netid": "tcp",
|
|
|
|
"state": "LISTEN",
|
|
|
|
"recv_q": "0",
|
|
|
|
"send_q": "128",
|
|
|
|
"local_address": "127.0.0.1",
|
|
|
|
"local_port": "35485",
|
|
|
|
"peer_address": "0.0.0.0",
|
|
|
|
"peer_port": "*",
|
|
|
|
"interface": "lo"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "tcp",
|
|
|
|
"state": "LISTEN",
|
|
|
|
"recv_q": "0",
|
|
|
|
"send_q": "128",
|
|
|
|
"local_address": "[::]",
|
|
|
|
"local_port": "ssh",
|
|
|
|
"peer_address": "[::]",
|
|
|
|
"peer_port": "*"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"netid": "v_str",
|
|
|
|
"state": "ESTAB",
|
|
|
|
"recv_q": "0",
|
|
|
|
"send_q": "0",
|
|
|
|
"local_address": "999900439",
|
|
|
|
"local_port": "1023",
|
|
|
|
"peer_address": "0",
|
|
|
|
"peer_port": "976"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
## process
|
|
|
|
```python
|
|
|
|
process(proc_data)
|
|
|
|
```
|
|
|
|
|
|
|
|
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-13 07:45:37 -08:00
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
dictionary structured data with the following schema:
|
|
|
|
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"netid": string,
|
|
|
|
"state": string,
|
|
|
|
"recv_q": integer,
|
|
|
|
"send_q": integer,
|
|
|
|
"local_address": string,
|
|
|
|
"local_port": string,
|
|
|
|
"local_port_num": integer,
|
|
|
|
"peer_address": string,
|
|
|
|
"peer_port": string,
|
|
|
|
"peer_port_num": integer,
|
|
|
|
"interface": string
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
## parse
|
|
|
|
```python
|
|
|
|
parse(data, raw=False, quiet=False)
|
|
|
|
```
|
|
|
|
|
|
|
|
Main text parsing function
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
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
|
|
|
|
|