1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-12-20 00:23:11 +02:00
Files
jc/docs/parsers/dig.md
2022-01-25 17:07:47 -08:00

6.6 KiB

Home

jc.parsers.dig

jc - JSON CLI output utility dig command output parser

Options supported:

  • +noall +answer options are supported in cases where only the answer information is desired.
  • +axfr option is supported on its own

The when_epoch calculated timestamp field is naive. (i.e. based on the local time of the system the parser is run on)

The when_epoch_utc calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.

Usage (cli):

$ dig example.com | jc --dig

or

$ jc dig example.com

Usage (module):

import jc result = jc.parse('dig', dig_command_output)

or

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

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 } ], "opt_pseudosection": { "edns": { "version": integer, "flags": [ string ], "udp": integer }, "cookie": string }, "question": { "name": string, "class": string, "type": string }, "answer": [ { "name": string, "class": string, "type": string, "ttl": integer, "data": string } ], "additional": [ { "name": string, "class": string, "type": string, "ttl": integer, "data": string } ], "authority": [ { "name": string, "class": string, "type": string, "ttl": integer, "data": string } ], "query_size": integer, "query_time": integer, # in msec "server": string, "when": string, "when_epoch": integer, # [0] "when_epoch_utc": integer, # [1] "rcvd": integer "size": string } ]

[0] naive timestamp if "when" field is parsable, else null [1] timezone aware timestamp availabe for UTC, else null

Examples:

$ dig example.com | jc --dig -p [ {

  • "id" - 2951,

  • "opcode" - "QUERY",

  • "status" - "NOERROR",

  • "flags" - [ "qr", "rd", "ra" ],

  • "query_num" - 1,

  • "answer_num" - 1,

  • "authority_num" - 0,

  • "additional_num" - 1,

  • "opt_pseudosection" - {

  • "edns" - {

  • "version" - 0,

  • "flags" - [],

  • "udp" - 4096 } },

  • "question" - {

  • "name" - "example.com.",

  • "class" - "IN",

  • "type" - "A" },

  • "answer" - [ {

  • "name" - "example.com.",

  • "class" - "IN",

  • "type" - "A",

  • "ttl" - 39302,

  • "data" - "93.184.216.34" } ],

  • "query_time" - 49,

  • "server" - "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",

  • "when" - "Fri Apr 16 16:05:10 PDT 2021",

  • "rcvd" - 56,

  • "when_epoch" - 1618614310,

  • "when_epoch_utc" - null } ]

    $ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p -r [ {

  • "id" - "46052",

  • "opcode" - "QUERY",

  • "status" - "NOERROR",

  • "flags" - [ "qr", "rd", "ra" ],

  • "query_num" - "1",

  • "answer_num" - "1",

  • "authority_num" - "0",

  • "additional_num" - "1",

  • "opt_pseudosection" - {

  • "edns" - {

  • "version" - "0",

  • "flags" - [],

  • "udp" - "4096" } },

  • "question" - {

  • "name" - "example.com.",

  • "class" - "IN",

  • "type" - "A" },

  • "answer" - [ {

  • "name" - "example.com.",

  • "class" - "IN",

  • "type" - "A",

  • "ttl" - "40426",

  • "data" - "93.184.216.34" } ],

  • "query_time" - "48 msec",

  • "server" - "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",

  • "when" - "Fri Apr 16 16:06:12 PDT 2021",

  • "rcvd" - "56" } ]

    $ dig -x 1.1.1.1 | jc --dig -p [ {

  • "id" - 20785,

  • "opcode" - "QUERY",

  • "status" - "NOERROR",

  • "flags" - [ "qr", "rd", "ra" ],

  • "query_num" - 1,

  • "answer_num" - 1,

  • "authority_num" - 0,

  • "additional_num" - 1,

  • "opt_pseudosection" - {

  • "edns" - {

  • "version" - 0,

  • "flags" - [],

  • "udp" - 4096 } },

  • "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" - 40,

  • "server" - "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",

  • "when" - "Sat Apr 17 14:50:50 PDT 2021",

  • "rcvd" - 78,

  • "when_epoch" - 1618696250,

  • "when_epoch_utc" - null } ]

    $ dig -x 1.1.1.1 | jc --dig -p -r [ {

  • "id" - "32644",

  • "opcode" - "QUERY",

  • "status" - "NOERROR",

  • "flags" - [ "qr", "rd", "ra" ],

  • "query_num" - "1",

  • "answer_num" - "1",

  • "authority_num" - "0",

  • "additional_num" - "1",

  • "opt_pseudosection" - {

  • "edns" - {

  • "version" - "0",

  • "flags" - [],

  • "udp" - "4096" } },

  • "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" - "52 msec",

  • "server" - "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",

  • "when" - "Sat Apr 17 14:51:46 PDT 2021",

  • "rcvd" - "78" } ]

    $ dig +noall +answer cnn.com | jc --dig -p [ {

  • "answer" - [ {

  • "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.65.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" } ] } ]

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 parse
  • raw - (boolean) unprocessed output if True
  • quiet - (boolean) suppress warning messages if True

Returns:

List of Dictionaries. Raw or processed structured data.

Parser Information

Compatibility: linux, aix, freebsd, darwin, win32, cygwin

Version 2.2 by Kelly Brazil (kellyjonbrazil@gmail.com)