JC Version 1.6.1 Released

Try the jc web demo!

I’m happy to announce that jc version 1.6.1 has been released and is available on github and pypi.

To upgrade, run:

$ pip install --upgrade jc

New Parsers

jc now includes 32 parsers! New parsers (tested on linux and OSX) include:

  • du
  • crontab files
  • pip list
  • pip show

Updated Parsers

ifconfig parser now outputs rx_bytes and tx_bytes as integers.

More OSX Support

Version 1.6.1 provides more OSX support and testing for several existing parsers, including:

  • ifconfig
  • arp
  • df
  • mount
  • uname -a
  • ls
  • dig
  • ps
  • w
  • uptime

About JC Information

jc now has an about option that will show the version of jc and all of the included parsers. Other information, including parser compatibility and authorship will also be shown in JSON format.

$ jc -a -p
{
  "name": "jc",
  "version": "1.6.1",
  "description": "jc cli output JSON conversion tool",
  "author": "Kelly Brazil",
  "author_email": "kellyjonbrazil@gmail.com",
  "parser_count": 32,
  "parsers": [
    {
      "name": "arp",
      "argument": "--arp",
      "version": "1.1",
      "description": "arp parser",
      "author": "Kelly Brazil",
      "author_email": "kellyjonbrazil@gmail.com",
      "compatible": [
        "linux",
        "aix",
        "freebsd",
        "darwin"
      ]
    },
    {
      "name": "crontab",
      "argument": "--crontab",
      "version": "1.0",
      "description": "crontab file parser",
      "author": "Kelly Brazil",
      "author_email": "kellyjonbrazil@gmail.com",
      "compatible": [
        "linux",
        "darwin",
        "aix",
        "freebsd"
      ]
    },
    ...
  ]
}

Schema Changes

The ifconfig parser output now prints the state value as a JSON array instead of a string. Also, as mentioned above, rx_bytes and tx_bytes are available.

$ ifconfig lo | jc --ifconfig -p
[
  {
    "name": "lo",
    "flags": 73,
    "state": [
      "UP",
      "LOOPBACK",
      "RUNNING"
    ],
    "mtu": 65536,
    "ipv4_addr": "127.0.0.1",
    "ipv4_mask": "255.0.0.0",
    "ipv4_bcast": null,
    "ipv6_addr": "::1",
    "ipv6_mask": 128,
    "ipv6_scope": "0x10",
    "mac_addr": null,
    "type": "Local Loopback",
    "rx_packets": 0,
    "rx_bytes": 0,
    "rx_errors": 0,
    "rx_dropped": 0,
    "rx_overruns": 0,
    "rx_frame": 0,
    "tx_packets": 0,
    "tx_bytes": 0,
    "tx_errors": 0,
    "tx_dropped": 0,
    "tx_overruns": 0,
    "tx_carrier": 0,
    "tx_collisions": 0,
    "metric": null
  }
]

The df parser now uses an underscore instead of a dash in the “blocks” field name:

$ df | jc --df -p
[
  {
    "filesystem": "devtmpfs",
    "1k_blocks": 1918816,
    "used": 0,
    "available": 1918816,
    "mounted_on": "/dev",
    "use_percent": 0
  },
  ...
]

Full Parser List

  • arp
  • crontab
  • df
  • dig
  • du
  • env
  • free
  • fstab
  • history
  • hosts
  • ifconfig
  • iptables
  • jobs
  • ls
  • lsblk
  • lsmod
  • lsof
  • mount
  • netstat
  • pip list
  • pip show
  • ps
  • route
  • ss
  • stat
  • systemctl
  • systemctl list-jobs
  • systemctl list-sockets
  • systemctl list-unit-files
  • uname -a
  • uptime
  • w

For more information on the motivations for creating jc, see my blog post.

Happy parsing!

Published by kellyjonbrazil

I'm a cybersecurity and cloud computing nerd.

Leave a Reply

%d bloggers like this: