Is there any way to search in JAMF or create some sort of inventory report that can identify computers that have external hard drives attached? We'd like to be able to identify which of our users are using external drives and whether or not those drives are encrypted.
I think this will accomplish what you've described.
Create an extension attribute, use this as the script. Then create a smart group containing non-blank content for that EA.
Let me know if it doesn't quite work for you.
#!/usr/bin/python
# Copyright (c) 2017 University of Utah Student Computing Labs. ################
# All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright notice appears in all copies and
# that both that copyright notice and this permission notice appear
# in supporting documentation, and that the name of The University
# of Utah not be used in advertising or publicity pertaining to
# distribution of the software without specific, written prior
# permission. This software is supplied as is without expressed or
# implied warranties of any kind.
################################################################################
# ea_external_encrypted_disks.py ###############################################
#
# A Python script report external disks and encryption status.
#
# 1.0.0 2017.10.24 Initial release. tm
#
################################################################################
# Notes ########################################################################
# Example output:
# <result>3 external drives. 1 encrypted.</result>
#
# Offline encrypted (ejected, but still attached) drives will cause odd results.
# Checking for physical and external is probably overkill...
# An encrypted internal volume will be included in encrypted count. Doh.
#
################################################################################
from __future__ import print_function
import subprocess
raw_disklist = subprocess.check_output(["/usr/sbin/diskutil", "list"])
raw_disklist = raw_disklist.split("
")
external_disks = 0
encrypted_disks = 0
for item in raw_disklist:
if "/dev/disk" in item and "physical" in item and "external" in item:
external_disks += 1
elif "Encrypted" in item:
encrypted_disks += 1
if external_disks >= 2:
print("<result>" + str(external_disks) + " external drives. " + str(encrypted_disks) + " encrypted.</result>")
elif external_disks:
print("<result>External Drive Present. " + str(encrypted_disks) + " encrypted.</result>")
Thank you for the suggestion. I'll give this a shot. Using external attributes is new to me, however, so what would you suggest for the Smart Group criteria?
At the moment, I've created a smart group based on this EA that is "like external" (since it appears the script would output "external" if one is present). Am I on the right path, or did I misunderstand how to go about this?
Since the EA won't return anything if there are no external disks, I would use:
YOUR_EA_NAME [is not] [ "leave blank" ]
This works great! HUGE thank you!
This is awesome I am trying this out today.
@todd.mcdaniel do you have a github we can reference? I'd like to fork it over to my account. If not are you okay with me adding this script to my github?
Thank you for your interest and I'm glad you can make use of it.
This script is included in this repo: SCL JAMF Pro Extension Attribute Collection.
Awesome!!! Thanks for the Github link!!!
Will this also count DMGs?
@a.holley I believe "Physical" and "External" will exclude mounted disk images.
Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.