1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00
Files
jc/docs/parsers/dig.md
2020-08-05 13:32:59 -07:00

9.3 KiB

jc.parsers.dig

jc - JSON CLI output utility dig Parser

Usage (cli):

Specify --dig as the first argument if the piped input is coming from dig

Usage (module):

import jc.parsers.dig
result = jc.parsers.dig.parse(dig_command_output)

Compatibility:

'linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'

Examples:

$ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p
[
  {
    "id": 34128,
    "opcode": "QUERY",
    "status": "NOERROR",
    "flags": [
      "qr",
      "rd",
      "ra"
    ],
    "query_num": 1,
    "answer_num": 4,
    "authority_num": 0,
    "additional_num": 1,
    "question": {
      "name": "cnn.com.",
      "class": "IN",
      "type": "A"
    },
    "answer": [
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": 60,
        "data": "151.101.65.67"
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": 60,
        "data": "151.101.193.67"
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": 60,
        "data": "151.101.1.67"
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": 60,
        "data": "151.101.129.67"
      }
    ],
    "query_time": 37,
    "server": "2600",
    "when": "Tue Nov 12 07:14:42 PST 2019",
    "rcvd": 100
  },
  {
    "id": 15273,
    "opcode": "QUERY",
    "status": "NOERROR",
    "flags": [
      "qr",
      "aa",
      "rd"
    ],
    "query_num": 1,
    "answer_num": 1,
    "authority_num": 4,
    "additional_num": 1,
    "question": {
      "name": "www.cnn.com.",
      "class": "IN",
      "type": "A"
    },
    "answer": [
      {
        "name": "www.cnn.com.",
        "class": "IN",
        "type": "CNAME",
        "ttl": 300,
        "data": "turner-tls.map.fastly.net."
      }
    ],
    "authority": [
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": 3600,
        "data": "ns-1086.awsdns-07.org."
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": 3600,
        "data": "ns-1630.awsdns-11.co.uk."
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": 3600,
        "data": "ns-47.awsdns-05.com."
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": 3600,
        "data": "ns-576.awsdns-08.net."
      }
    ],
    "query_time": 23,
    "server": "205.251.194.64#53(205.251.194.64)",
    "when": "Tue Nov 12 07:14:42 PST 2019",
    "rcvd": 212
  }
]

$ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p -r
[
  {
    "id": "23843",
    "opcode": "QUERY",
    "status": "NOERROR",
    "flags": [
      "qr",
      "rd",
      "ra"
    ],
    "query_num": "1",
    "answer_num": "4",
    "authority_num": "0",
    "additional_num": "1",
    "question": {
      "name": "cnn.com.",
      "class": "IN",
      "type": "A"
    },
    "answer": [
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": "30",
        "data": "151.101.193.67"
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": "30",
        "data": "151.101.1.67"
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": "30",
        "data": "151.101.65.67"
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "A",
        "ttl": "30",
        "data": "151.101.129.67"
      }
    ],
    "query_time": "24 msec",
    "server": "192.168.1.254#53(192.168.1.254)",
    "when": "Tue Nov 12 07:16:19 PST 2019",
    "rcvd": "100"
  },
  {
    "id": "8266",
    "opcode": "QUERY",
    "status": "NOERROR",
    "flags": [
      "qr",
      "aa",
      "rd"
    ],
    "query_num": "1",
    "answer_num": "1",
    "authority_num": "4",
    "additional_num": "1",
    "question": {
      "name": "www.cnn.com.",
      "class": "IN",
      "type": "A"
    },
    "answer": [
      {
        "name": "www.cnn.com.",
        "class": "IN",
        "type": "CNAME",
        "ttl": "300",
        "data": "turner-tls.map.fastly.net."
      }
    ],
    "authority": [
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": "3600",
        "data": "ns-1086.awsdns-07.org."
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": "3600",
        "data": "ns-1630.awsdns-11.co.uk."
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": "3600",
        "data": "ns-47.awsdns-05.com."
      },
      {
        "name": "cnn.com.",
        "class": "IN",
        "type": "NS",
        "ttl": "3600",
        "data": "ns-576.awsdns-08.net."
      }
    ],
    "query_time": "26 msec",
    "server": "205.251.194.64#53(205.251.194.64)",
    "when": "Tue Nov 12 07:16:19 PST 2019",
    "rcvd": "212"
  }
]

$ dig -x 1.1.1.1 | jc --dig -p
[
  {
    "id": 34898,
    "opcode": "QUERY",
    "status": "NOERROR",
    "flags": [
      "qr",
      "rd",
      "ra"
    ],
    "query_num": 1,
    "answer_num": 1,
    "authority_num": 0,
    "additional_num": 1,
    "question": {
      "name": "1.1.1.1.in-addr.arpa.",
      "class": "IN",
      "type": "PTR"
    },
    "answer": [
      {
        "name": "1.1.1.1.in-addr.arpa.",
        "class": "IN",
        "type": "PTR",
        "ttl": 952,
        "data": "one.one.one.one."
      }
    ],
    "query_time": 103,
    "server": "2600",
    "when": "Tue Nov 12 07:15:33 PST 2019",
    "rcvd": 78
  }
]

$ dig -x 1.1.1.1 | jc --dig -p -r
[
  {
    "id": "50986",
    "opcode": "QUERY",
    "status": "NOERROR",
    "flags": [
      "qr",
      "rd",
      "ra"
    ],
    "query_num": "1",
    "answer_num": "1",
    "authority_num": "0",
    "additional_num": "1",
    "question": {
      "name": "1.1.1.1.in-addr.arpa.",
      "class": "IN",
      "type": "PTR"
    },
    "answer": [
      {
        "name": "1.1.1.1.in-addr.arpa.",
        "class": "IN",
        "type": "PTR",
        "ttl": "1800",
        "data": "one.one.one.one."
      }
    ],
    "query_time": "38 msec",
    "server": "2600",
    "when": "Tue Nov 12 07:17:19 PST 2019",
    "rcvd": "78"
  }
]

info

info()

process

process(proc_data)

Final processing to conform to the schema.

Parameters:

proc_data:   (dictionary) raw structured data to process

Returns:

List of dictionaries. Structured data with the following schema:

[
  {
    "id":             integer,
    "opcode":         string,
    "status":         string,
    "flags": [
                      string
    ],
    "query_num":      integer,
    "answer_num":     integer,
    "authority_num":  integer,
    "additional_num": integer,
    "axfr": [
      {
        "name":       string,
        "class":      string,
        "type":       string,
        "ttl":        integer,
        "data":       string
      }
    ],
    "question": {
      "name":         string,
      "class":        string,
      "type":         string
    },
    "answer": [
      {
        "name":       string,
        "class":      string,
        "type":       string,
        "ttl":        integer,
        "data":       string
      }
    ],
    "authority": [
      {
        "name":       string,
        "class":      string,
        "type":       string,
        "ttl":        integer,
        "data":       string
      }
    ],
    "query_time":     integer,   # in msec
    "server":         string,
    "when":           string,
    "rcvd":           integer
    "size":           string
  }
]

parse

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:

List of dictionaries. Raw or processed structured data.