• Stars
    star
    143
  • Rank 257,007 (Top 6 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 3 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Mac command-line tool that generates kick-ass Jamf Pro reports.

KMART - Kick-Ass Mac Admin Reporting Tool

A command-line utility that generates kick-ass Jamf Pro reports:

Email

Optionally sent via Slack:

Slack

Features

  • Reporting on the following Jamf Pro objects:
    • πŸ’» Mac
      • Advanced Searches
      • Applications
      • Configuration Profiles
      • Devices
      • Directory Bindings
      • Disk Encryptions
      • Dock Items
      • Extension Attributes
      • Packages
      • Patch Management Software Titles
      • Patch Policies
      • Policies
      • Printers
      • Restricted Software
      • Scripts
      • Smart Groups
      • Static Groups
    • πŸ“± Mobile
      • Advanced Searches
      • Applications
      • Configuration Profiles
      • Devices
      • Extension Attributes
      • Smart Groups
      • Static Groups
    • 🏒 Buildings
    • πŸ“‚ Categories
    • 🏬 Departments
    • πŸ“š eBooks
    • πŸ…±οΈ iBeacons
    • πŸ“Ά Network Segments
  • πŸ“’ Customise reporting options via JSON, Property List or YAML configuration files
  • πŸ“‹ Output reports as JSON, Property List, YAML, Markdown or HTML files
  • πŸ—„οΈ Send reports via Slack

Usage

OVERVIEW: Kick-Ass Mac Admin Reporting Tool

Generate kick-ass Jamf Pro reports.

USAGE: kmart [--json <json>] [--plist <plist>] [--yaml <yaml>]

OPTIONS:
  -j, --json <json>       JSON configuration file.
  -p, --plist <plist>     Property List configuration file.
  -y, --yaml <yaml>       YAML configuration file.
  --version               Show the version.
  -h, --help              Show help information.

Configuration

  • See Sample Configs for all configuration options.

    Note: Use the following command to encode your credentials in the configuration file:

    printf 'username:password' | iconv --to-code ISO-8859-1 | base64

  • For Slack integration, read Basic app setup to create a Slack app with a Bot token.

    Note: The Bot token will require the chat:write and files:write permission scopes.

Privileges

Kmart requires the following user privileges in order to report correctly.

Recommendations:

  • Create a separate Jamf Pro User Account
  • Do not just add these permissions to an existing account
  • If you are not reporting on everything, only enable the privileges that are required
Privilege Create Read Update Delete
Advanced Computer Searches - βœ… - -
Advanced Mobile Device - βœ… - -
Buildings - βœ… - -
Categories - βœ… - -
Computer Extension Attributes - βœ… - -
Computers - βœ… - -
Departments - βœ… - -
Directory Bindings - βœ… - -
Disk Encryption Configurations - βœ… - -
Dock Items - βœ… - -
eBooks - βœ… - -
iBeacons - βœ… - -
Mac App Store Apps - βœ… - -
macOS Configuration Profiles - βœ… - -
Mobile Device Apps - βœ… - -
Mobile Device Configuration Profiles - βœ… - -
Mobile Device Extension Attributes - βœ… - -
Mobile Devices - βœ… - -
Network Segments - βœ… - -
Packages - βœ… - -
Patch Management Software Titles - βœ… - -
Patch Policies - βœ… - -
Policies - βœ… - -
Printers - βœ… - -
Restricted Software Records - βœ… - -
Scripts - βœ… - -
Smart Computer Groups - βœ… - -
Smart Mobile Device Groups - βœ… - -
Static Computer Groups - βœ… - -
Static Mobile Device Groups - βœ… - -

Build Requirements

  • Swift 5.5.
  • Runs on macOS Monterey 12 and later.

Download

  • Grab the latest version of KMART from the releases page.
  • Note: Versions 1.3 and later require macOS Monterey or later.
    • If you need to run KMART on an older operating system, you can still use version 1.2.

Credits / Thank You

Version History

  • 1.3.2

    • Fixed an issue where mac_policies_no_payload was not reporting correctly (thanks monodata)
    • URL slugs have been updated to match recent Jamf Pro changes (thanks thomasrmartin)
  • 1.3.1

    • Nested Smart Groups are now also detected when generating reports
  • 1.3

    • Added support for linting Python scripts via flake8
    • Added support for reporting on Patch Management Software Titles:
      • New report types: mac_patch_policies_no_scope and mac_patch_policies_disabled
      • Existing reports now factor in Patch Management Software Titles and Patch Policies
    • Progress output is now dynamic, updating in-place
    • Basic Authentication has been replaced with Bearer Token Authentication
    • Option to send reports via Email has been removed
    • Fixed the missing Serial Number column header for Unmanaged Mac/Mobile Device reports in Markdown and HTML
    • General cosmetic bugfixes

    Note: Kmart now uses Swift concurrency (async await), which significantly reduces the amount and complexity of HTTP code. Concurrency requires macOS Monterey 12, therefore support for macOS Catalina 10.15 and macOS Big Sur 11 has been dropped.

  • 1.2

    • Added support for sending reports via Slack
    • Added mac_devices_unmanaged and mobile_devices_unmanaged report types
      • Mac and Mobile device reports now exclude unmanaged devices
    • Added support for custom api_timeout value (default: 10)
    • Mac Packages now also display Categories in Markdown / HTML reports
    • Improved file handling for Mac Extension Attributes and Mac Scripts over 64KB
    • Fixed escaping of \ in JSON reports
    • Fixed escaping of _ in Markdown / HTML reports
    • Reduced verbosity of output messaging (reads much nicer)
  • 1.1

    • Report on one-off Mac Policies that were created via Jamf Remote (mac_policies_jamf_remote)
    • Less ambiguous descriptions for Markdown / HTML output
    • Better escaping of ASCII characters for Markdown / HTML output
    • Fixed false-positive linter errors for Mac Extension Attributes with carriage returns (\r)
    • Fixed Mac Directory Bindings reporting as Mac Disk Encryptions
    • Fixed emailing report only if enabled is set to true
  • 1.0

    • Initial release

License

Copyright Β© 2023 Nindi Gill

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.