Posted on 04-10-2015 01:02 PM
Hi JAMF Nation -
We’re often asked by customers, the JAMF Nation community, and internal Sales and Support staff “How do we do X internally at JAMF?"
I’m excited to announce that the JAMF IT team has started open sourcing all of our scripts, code, and internally created utilities to share with JAMF Nation and the Mac Admin community: https://github.com/jamfit
Not only will we be posting our internally-created scripts, code, and utilities in an open source format for everyone to use, we’re also going to include information on how exactly we use the JSS to deploy and manage these items.
There are multiple ways to solve the challenges that we as IT practitioners face on a daily basis. We’re hoping that our solutions will give you ideas for your environment and hope to see everyone continue the conversations with the JAMF Nation community on how we solve these challenges together.
Posted on 04-10-2015 01:06 PM
Nice work JAMFs!
Posted on 04-10-2015 01:08 PM
SWEET!
Posted on 04-10-2015 01:16 PM
Posted on 04-10-2015 01:25 PM
Posted on 04-10-2015 01:31 PM
Posted on 04-10-2015 01:42 PM
AWESOME!
Posted on 04-10-2015 02:09 PM
For just a few seconds when I see a really great resource I almost panic. I think my job could be done by another, then I remember there are only two of that work here that know that grep(s) are not used to make wine!
Alright JAMF!
Posted on 04-10-2015 02:10 PM
I imagine someone a little more python-savvy than myself can turn that AD password age script into an AD password days-until-expiration script?
ETA: Okay I guess it is days until expiration. Words.
Posted on 04-10-2015 02:31 PM
@emilykausalik there's an app for that
Posted on 04-10-2015 02:35 PM
Thank you Thank you !!!!
C
Posted on 04-10-2015 02:49 PM
Thanks JAMF!
Posted on 04-10-2015 02:58 PM
@bentoms oh we definitely use ADPassMon in our environment. I was just wanting something I could see in an EA in the JSS.
Posted on 04-10-2015 04:10 PM
Thanks for sharing!
Posted on 04-10-2015 04:22 PM
Posted on 04-13-2015 03:43 PM
Love it! Thanks for sharing!
I tried the JSS-LDAP-Sync tool but unfortunately our LDAP queries are hitting the Active Directory LDAP size limit so the script is throwing this exception:
ldap.SIZELIMIT_EXCEEDED: {'desc': 'Size limit exceeded'}
I did a bit of research and it looks like a fix is possible using SimplePagedResultsControl from the python-ldap package. Here is an example of it in use:
https://code.google.com/p/google-apps-for-your-domain-ldap-sync/source/browse/trunk/ldap_ctxt.py
Posted on 04-13-2015 04:39 PM
Hi @jescala,
Our AD environment has less than 500 staff accounts so paging wasn't something I had to worry about when I first wrote this. If you have suggestions for improvements on any of the scripts you could open up a GitHub issue on it. Go here to open one for JSS-LDAP-Sync.
Out of curiosity, how many accounts do you have in the base dn you're searching against?
Posted on 04-14-2015 07:35 AM
Awesome, thank you!
Posted on 04-14-2015 08:42 AM
Hello @brysontyrrell,
We have >35,000 users, so we hit that 1000 limit pretty quickly!
I just opened your first issue on GitHub. Thanks so much for doing this! JAMF Rocks! :-)
Posted on 04-14-2015 08:50 AM
Posted on 04-14-2015 08:52 AM
Great to see an effort like this from JAMF, supporting the community! Nicely done.
Posted on 04-14-2015 09:06 AM
Hi everybody,
We've posted another six scripts to the GitHub account. This will probably be the last big update we do for a while. The scripts we've posted are:
Box-Sync-4-Installer
A script for installing Box Sync 4 from Self Service
BYOD-Reporting
A script used to generate a report on devices used for BYOD
Encrypted-Script-Parameters
Functions for generating strings and decrypting them for use as script parameters
Self-Service-Enrollment-Profile
A script to create an enrollment profile for a user from Self Service
Self-Service-QuickAdd-Package
A script to create a QuickAdd package for a user from Self Service
SourceTree-Installer
A script for installing SourceTree from Self Service
If there are improvements that you would like to recommend, please open an issue on the repo for us to work against. No guarantees on when we will be able to address some of these issues (still got to work). We're also following this thread so we will be replying to posts.
And thanks to @jescala for that first issue! Hopefully I'll get some time to work on building in paging support.
Posted on 04-15-2015 01:43 AM
Brilliant. Thanks for sharing JAMF!
Posted on 04-15-2015 02:34 AM
@emilykausalik I knocked up a script a while ago, which I use to help with password changes, and contains a days-until-expiry component. It shouldn't be too hard to Pythonise if you just want to wrap the commands in a Python subprocess, that way you don't need to worry about 3rd party modules?
Posted on 04-16-2015 12:21 PM
We had an internal request for another script so it got posted today: Reset MDM
Posted on 04-16-2015 01:15 PM
Posted on 04-16-2015 04:00 PM
Seriously cool! Way to go JAMF!
Posted on 04-17-2015 10:09 AM
Silly question time… @brysontyrrell how does one find the mdm uuid?
Posted on 04-17-2015 10:16 AM
@emilykausalik Crap, I didn't put that in the README did I?
Super simple. From a Mac that is managed already, run:
~$ sudo profiles -Pv
profiles: verbose mode ON
_computerlevel[1] attribute: name: MDM Profile
_computerlevel[1] attribute: configurationDescription: MDM Profile for mobile device management
_computerlevel[1] attribute: installationDate: 2015-03-27 00:31:46 +0000
_computerlevel[1] attribute: organization: JAMF Software
_computerlevel[1] attribute: profileIdentifier: <<<UUID-IS-FOUND-HERE>>>
_computerlevel[1] attribute: profileUUID: <<<UUID-IS-FOUND-HERE>>>
Just look for the one with the attribute name of "MDM Profile" - which should be the very first. The profileIdentifier and profileUUID values should be the same.
Posted on 04-17-2015 10:24 AM
Thank you, kind sir.
Posted on 05-08-2015 11:35 AM
Hi everyone!
We made some fairly big additions to our GitHub today. We have two scripts and one project for you to check out:
icns Creator
This is a shell script that takes a source image and outputs an .icns file containing all of the required resolutions (from 16x16 through 512x512@2x).
https://github.com/jamfit/icns-Creator
BugHerder
This Python script takes an XML output from BugHerd and generates JIRA issues. This was used to switch one of our departments to JIRA during our org's migration.
https://github.com/jamfit/BugHerder
HipStatus
This is an OS X status bar app written in Python that manages a user's presence in HipChat based upon their Office 365 calendar availability. For more details check out the README on the repo!
https://github.com/jamfit/HipStatus