Python Macadmin Tools
This repository aims to collect a list of open-source Python-based tools for Mac systems administration tasks.
Why is this list limited to Python? Why not include all projects in this space? Python is an especially popular language among Mac sysadmins; this restriction is partly so that those learning Python for Mac-specific tasks have a mostly-complete list of known code and approaches from which to learn. It's also to help those more experienced with Python to discover projects that they may be able to adapt, extend and/or contribute to.
Table of Contents
- Deployment automation, imaging, packaging
- Client-side management: utilities
- Client-side management: libraries and modules
- Mobile Device Management (MDM)
- Misc. utilities and modules
- Scripts and gists
- Configuration management
- autopromoter - Automatically promote (or demote) Munki pkginfo catalogs.
- BananaEndocarp - BananaEndocarp is a scripted GUI for interacting with MunkiWebAdmin2's API, for creating per-machine manifests.
- BananaPeels - A framework for testing the deployement of packages via Munki wrapped in a CLI tool. Requires VMWare Fusion.
- CloudFront-Middleware - Securely access a munki repo with Amazon CloudFront.
- Moscargo - Flask-based Munki repo browser used for listing and downloading current versions of curated packages.
- MunkiCatalogPromote - Promotes Munki pkginfo catalogs that haven't been promoted in X number of days.
- MunkiGenericIcons - Copies your own custom Generic.png to any Munki items missing a corresponding icon.
- MunkiModulePackager - CLI tool for downloading and packaging PyPi module sources for distribution via Munki.
- Munki Enrollment Server - A server that works in coordination with a GUI client that provides a method of enrolling a Mac with Munki for certificate-based communication and a custom manifest.
- Munki project - Managed software installations for Mac clients. Supports all popular software distribution formats. This is the de facto project repository.
- Munki Promote - Another script for promoting items from one catalog to another.
- Munki Sysadmin Usability Improvement Toolkit - CLI tools for maintaining workflows for managing Munki catalogs along with AutoPkg.
- MunkiWebAdmin - A Django-based reporting app for Munki - support for licensing, manifest editing.
- Munki-Do - A fork of MunkiWebAdmin with many new repo-editing features.
- munki-facts - A framework for "admin-provided conditionals" for Munki.
- munki-rebrand - Scripts used by University of Oxford IT Services to rebrand Munki.
- munki-staging - A fork of the munki-trello project with several additional major features.
- munki-trello - A script that utilises a Trello board to manage the promotion of Munki items through development to testing to production catalogs.
- OldMunkiPackages - Script to automatically remove older versions of packages that share the same catalogs.
- PrinterGenerator - Generate specific 'nopkg' pkginfos for printer configurations.
- printer-pkginfo - Another script for generating specific 'nopkg' pkginfos for printer configurations.
- Sal - Another Django-based reporting app for Munki, integrates with Facter facts on clients.
- Simian - Custom Munki service based on GAE, by Google.
- Spruce for Munki - Generates lists/reports, including orphaned icons or unused products.
- TweetCatalogUpdates - Python script that watches for catalog changes in your munki respository, and tweets them.
- Imagr - Mac app that performs imaging and deployment workflows fetched from a remote server, built with PyObjC.
- Imagr Server - Imagr reporting server built on Django.
- ImagrConfigCreator - Interactive script for generating or editing Imagr workflow plists.
- bsdpy - BSDP server with support for multiple netboot images, model/MAC filtering and an API.
- Crypt - Client and server for a Django-based Filevault key escrow solution.
- Macnamer - Django-based solution for managing Mac computer names.
- Margarita - Flask-based web interface for Reposado.
- pybsdpy - Another BSDP server.
- Reposado - Replacement for Apple's Software Update Service, supports multiple 'branches' of catalogs and offering cached updates no longer offered by Apple.
Deployment automation, imaging, packaging
- aamporter - Tool for automating the download and importing of Adobe CS/CC updates into Munki.
- AutoDMG - Mac app to create never-booted, restorable OS X system images, optionally with system updates and additional packages/applications, built with PyObjC.
- AutoNBI - Tool for automated creation of Netboot image bundles using System Image Utility's automation tools.
- AutoPkg - Tool and community for automating common deployment tasks using sharable 'recipes', for example: discovering new application updates, preparing them for deployment, importing into popular management platforms.
- Brigadier - Tool for fetch and install model-specific Boot Camp images, can be used to bootstrap drivers during Windows deployment.
- can_haz_image - Tool for creating never-booted OS X system images with additional packages.
- createOSXInstallPkg - Tool for converting an OS X installer app/ESD to a package that can trigger the OS X install on the next boot, optionally with additional packages added in the install.
- CreateUserPkg - Mac app to create a package that installs or updates a user on an OS X system, built with PyObjC.
- easy_rider - Automatically create overrides for a list of AutoPkg recipes, using current production Munki pkginfo and templates to override final recipe.
- first-boot-pkg - Tool for creating a single package that installs a series of packages automatically upon first boot.
- appleLoops - Utility for downloading essential and optional audio content for Apple GarageBand, Logic Pro X, and MainStage 3.
- JSSImporter - Framework for connecting AutoPkg to JSS, for administrators running JAMF's Casper Suite.
- JSSRecipeCreator - Tool that enables Casper administrators to quickly create JSSImporter-compatbile AutoPkg recipes.
- MacNamer - Combination of a Django web app and a companion script to run on client Macs for automatically setting computer names.
- make-adobe-cc-license-pkg - Tool for building packages and Munki pkginfos for CC for Teams device and Enterprise serial licenses.
- make-profile-pkg - Convert a Configuration Profile to an installer package that can be installed to both booted and non-booted volumes.
- munkipkg - Tool for building packages in a consistent, repeatable manner from source files and scripts in a project directory.
- quickpkg - Quickly and easily builds a one-off package from an installed application, a disk image, or a zip file.
- Recipe Robot - A Python script and companion Mac app that is able to automatically generate AutoPkg recipes.
- stew - Creation of never-booted, restorable OS X system images with additional packages.
- vfuse - Tool for converting an OS X system DMG to a VMware Fusion VM.
Client-side management: utilities
- auto_logout - PyObjC app to automatically log out users, designed for Mac computer labs.
- customdisplayprofiles - Programmatic configuration of display ColorSync profiles.
- dockutil - Programmatic access to a user's dock.
- Extinguish - Generates profiles that disable Sparkle updates for specified apps.
- installapplications - A tool for dynamic use of
- LoginLog - Cocoa/PyObjC app that display a log of your choice over the loginwindow, useful during deployment tasks.
- NCUtil - Programmatic access to Notification Center via direct manipulation of the NC database.
- Nomadize - Tool to help move a local account or home folder to an Active Directory Mobile account.
- offset - Script and launchd combo for executing admin-defined scripts at logout (based on Outset).
- outset - Script and launchd combo for executing admin-defined scripts after logins and startup.
- OutsetDockProfiler - Script that creates a package to use with Outset that will install a user-level profile for a specific user of your choice.
- PredicateInstaller - Programmatic invocation of Software Update client tasks such as printer drivers, dictation voices, CLI tools, Boot Camp drivers, via the private SoftwareUpdate framework.
- Privacy Services Manager - Programmatic access to privacy, location, etc. services via direct manipulation of the TCC database.
- pyLoginItems - Management of a user's login items list via PyObjC.
- Service Discovery Tool - CLI diagnostics tool for reporting DHCP and NetBoot services.
Client-side management: libraries and modules
- ChromeBookmarkEditor - Python module for easily adding, removing, and moving positions of bookmarks on the Chrome bookmark menu in the context of the logged in user.
- DockEditor - Python module for easily adding, removing, and moving positions of Dock items in the context of the logged in user.
- Facebook IT-CPE - A suite of tools that Facebook uses to manage their fleet of over 10,000 client machines.
- FinderSidebarEditor - Python module for programmatically editing the Favorites entries of the Finder sidebar.
- gpymacutil - Vast library of Python modules and tools for client management developed by Google.
- MacModelShelf - Returns human-readable Mac model names when given a serial number or model code.
- OSXcollector - A forensic evidence collection & analysis toolkit for OS X, developed by Yelp.
- pinpoint - A python script for finding Macs using the CoreLocation framework.
- pyfacts - Returns various 'facts' about a Mac.
- PyMacAdmin and crankd - Collection of Python utilities for interfacing to directory services and system configuration state changes, Leopard-era, developed at Google.
- SavingThrow - Returns information on whether a Mac has adware/malware installed, and includes an option for automatic removal.
- SafariBookmarkEditor - Python module for easily adding, removing, and moving positions of Safari bookmarks in the context of the currently logged in user.
- Stethoscope - Web application that collects information for a given user's devices and gives them clear and specific recommendations for securing their systems.
- U. of Utah Marriott Library Management Tools - Python module for client management.
- Zentral - Framework that allows administrators to configure automatic actions based on changes detected by osquery.
Mobile Device Management (MDM)
- Commandment - MDM server with support for managing iOS and OS X devices implemented in Python.
- DEPy - Python module for interacting with Apple's DEP service.
- mdmvendorsign - Create a CSR as a "vendor" of Apple's MDM push notification service.
- mk_pkg_manifest.py - Script for creating an Apple software distribution manifest for an Apple pkg installer.
Misc. utilities and modules
- APInfo - Obtain information about iOS/macOS applications and optionally output the results to Slack.
- appleseed - Automate downloading os x seed packages.
- edify - Stores a customizable library of command line syntax examples, with short descriptions.
- JSS Import - Pulls data from Casper 9 to a Postgres database for purpose of importing into WebHelpDesk. (Not to be confused with JSSImporter.)
- JSS Asset Tag Importer - Allows Casper administrators to quickly import asset tags into their JSS inventory.
- mcxToProfile - Convert preference plists and MCX nodes to Configuration Profiles for OS X management.
- ProfileSigner - A script that will encrypt and/or sign a .mobileconfig profile.
- pyMacWarranty - Retrieve warranty information given a Mac's serial number, estimates of manufacture date info and more.
- pyMASreceipt - Module for parsing Mac App Store receipts files.
- Python-JSS - Library that allows administrators to interact with a JSS using Python. Included with JSSImporter.
- Serveralerts - Manage the Server alerts DB of Server.app.
- Service Discovery Tool - Broadcasts DHCP Request and BSDP Inform packets on the local network and reports reponses for NetBoot/DHCP diagnostics.
- vserv - Service to monitor one or more vmx path[s] and restart the vmx[s] if necessary.
- warranty - Another warranty information retrieval script.
- Xcode Cocoa-Python Templates - Xcode 6 templates for Cocoa-Python development: Also Xcode 5, Xcode 4.
- py-gsxws - Library for communicating with Apple's GSX API
- SimplePySSH - Module for executing and reading output from simple shell commands on remote machines via SSH using only built-in modules.
- precache - Used to cache available Apple updates into an OS X Server running the Caching Service.
Scripts and gists
- Graham Gilbert - Client management, Munki, Puppet server automation
- Hannes Juutilainen - Collection of client attributes, client management and meta-packaging admin tasks
- Michael Lynn - Many small scripts and modules demonstrating the use of PyObjC and ctypes for native use of OS X system frameworks within Python.
- salt-osx - SaltStack grains, modules, and states to manage OS X, largely using PyObjC and ctypes.
- stronghold - Easily configure MacOS security settings from the terminal.
- U. of Utah Marriott Library Firmware Password Manager - Python script to automate the management of firmware passwords.