1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-19 00:17:51 +02:00
Files
jc/docs/parsers/last.md
2021-04-05 12:07:52 -07:00

3.0 KiB

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)

Compatibility:

'linux', 'darwin', 'aix', 'freebsd'

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()

process

process(proc_data)

Final processing to conform to the schema.

Parameters:

proc_data:   (List of Dictionaries) raw structured data to process

Returns:

List of Dictionaries. Structured data with the following 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
  }
]

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.