Inventory report: External Hard Drive

marlink
New Contributor III

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.

1 ACCEPTED SOLUTION

todd_mcdaniel
New Contributor III

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

View solution in original post

9 REPLIES 9

todd_mcdaniel
New Contributor III

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

marlink
New Contributor III

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?

todd_mcdaniel
New Contributor III

Since the EA won't return anything if there are no external disks, I would use:

YOUR_EA_NAME [is not] [ "leave blank" ]

marlink
New Contributor III

This works great! HUGE thank you!

kdean
New Contributor III

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?

todd_mcdaniel
New Contributor III

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.

kdean
New Contributor III

Awesome!!! Thanks for the Github link!!!

a_holley
Contributor

Will this also count DMGs?

todd_mcdaniel
New Contributor III

@a.holley I believe "Physical" and "External" will exclude mounted disk images.