Skip to the content.

Home

jc.parsers.last

jc - JSON CLI output utility last and lastb command output parser

Supports -w and -F options.

Calculated epoch time fields are naive (i.e. based on the local time of the system the parser is run on) since there is no timezone information in the last command output.

Usage (cli):

$ last | jc --last

or

$ jc last

Usage (module):

import jc.parsers.last
result = jc.parsers.last.parse(last_command_output)

Schema:

[
  {
    "user":             string,
    "tty":              string,
    "hostname":         string,
    "login":            string,
    "logout":           string,
    "duration":         string,
    "login_epoch":      integer,   # (naive) available with last -F option
    "logout_epoch":     integer,   # (naive) available with last -F option
    "duration_seconds": integer    # available with last -F option
  }
]

Examples:

$ last -F | jc --last -p
[
  {
    "user": "kbrazil",
    "tty": "ttys002",
    "hostname": null,
    "login": "Mon Dec 28 17:24:10 2020",
    "logout": "still logged in"
  },
  {
    "user": "kbrazil",
    "tty": "ttys003",
    "hostname": null,
    "login": "Mon Dec 28 17:24:10 2020",
    "logout": "Mon Dec 28 17:25:01 2020",
    "duration": "00:00",
    "login_epoch": 1565891826,
    "logout_epoch": 1565895404,
    "duration_seconds": 3578
  },
  {
    "user": "kbrazil",
    "tty": "ttys003",
    "hostname": null,
    "login": "Mon Dec 28 17:24:10 2020",
    "logout": "Mon Dec 28 17:25:01 2020",
    "duration": "00:00",
    "login_epoch": 1565891826,
    "logout_epoch": 1565895404,
    "duration_seconds": 3578
  },
  ...
]

$ last | jc --last -p -r
[
  {
    "user": "kbrazil",
    "tty": "ttys002",
    "hostname": "-",
    "login": "Thu Feb 27 14:31",
    "logout": "still_logged_in"
  },
  {
    "user": "kbrazil",
    "tty": "ttys003",
    "hostname": "-",
    "login": "Thu Feb 27 10:38",
    "logout": "10:38",
    "duration": "00:00"
  },
  {
    "user": "kbrazil",
    "tty": "ttys003",
    "hostname": "-",
    "login": "Thu Feb 27 10:18",
    "logout": "10:18",
    "duration": "00:00"
  },
  ...
]

info

info()

Provides parser metadata (version, author, etc.)

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.

Parser Information

Compatibility: linux, darwin, aix, freebsd

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