Best approach for determining if all parts of a suite are installed.....

fedagain
Contributor

Hello,

I'm trying to find the best approach for determining if all parts of Adobe CC are installed or not. I want to determine, either via Smart Group, Advanced search or maybe an EA....... I want to see what computers don't have all the pieces of our Adobe CC suite installed, but I want to be able to see what computers are missing what application(s).

Not sure of the best way to handle this. I was thinking I'd have to do separate searches for each application, but there has to be a better way, and the complicated part seems to reporting what computers are missing what.

Thank you
David

12 REPLIES 12

bvrooman
Valued Contributor

Licensed Software supports supercedence, so it should be able to accomplish what you want. We have a Licensed Software record for Acrobat only, Design Standard, Design & Web Premium, and Complete (which are the cost levels in our EA), which makes true-up time much simpler.

Edit:
Never mind, I re-read your post again and that probably doesn't do what you want. If you're looking to see which specific computers are missing which individual applications, separate smart groups are probably your best bet.

fedagain
Contributor

Thank you for the response..... the individual smart groups is what I was thinking also, but ugh! I was hoping for some sort of magic bullet! haha

kendalljjohnson
Contributor II

Not sure if this is the "best" way, but you could do something like this with an extension attribute to get the number of instances where "Adobe" is found in /Applications, and then a smart group for computers that match your desired number of Adobe instances.

ls /Applications | grep Adobe* | wc -l

mm2270
Legendary Contributor III

I'd be cautious about making a whole bunch of Smart Groups for this. You may have better results with an Extension Attribute.

bpavlov
Honored Contributor

@fedagain What kind of licensing do you have? If it's serial licensing, there is a license SWID file that Jamf Pro can read from to determine the licensing on the computer for the application that supports it (Adobe supports/uses it). If it's named/device licensing, I would not involve Jamf Pro at all and simply go through the Adobe Portal for Teams or Enterprise to manage your licenses by user/device.

Last bit of advice, do not use one big smart group to look for every Adobe application title and specific version. You will bring your JSS to a crawl. However, individual smart groups for each app shouldn't be a problem.

Look
Valued Contributor III

I agree with @kendalljjohnson and @mm2270 looks like a job for an EA with some logic built into.
Something like a Count of Adobe applications and then referencing a couple of known ones or some other know indicator to determine the suite installed.
If you wanted to get really complicated you can pass quite big strings to EA's I have passed lists of missing things before. There is probably a limit but I have 5 or 6 values items in one EA before.

mm2270
Legendary Contributor III

As an example of an EA to do this, here is one I put together for Office 2016 apps. If any of the standard apps were missing, they would end up showing up in the final result, The basic result can be one of All if all apps are present, Some if some are installed, and some aren't and None if none of them were installed. In the case of a "Some" result, it also shows which apps weren't installed.

#!/bin/bash

AppList=(
"Microsoft Outlook.app"
"Microsoft Word.app"
"Microsoft Excel.app"
"Microsoft PowerPoint.app"
"Microsoft OneNote.app"
)

while read APP; do
    if [[ ! -d "/Applications/$APP" ]]; then
        NotPresent+=("$APP")
    fi
done < <(printf '%s
' "${AppList[@]}")

if [[ ! -z "${NotPresent[@]}" ]]; then
    if [[ "${#NotPresent[@]}" == "${#AppList[@]}" ]]; then
        Result="None"
    else
        Result="Some
Missing:
$(printf '%s
' "${NotPresent[@]}")"
    fi
else
    Result="All"
fi

echo "<result>$Result</result>"

In the above, if I were to add in a bogus application to the initial array to check, like "Microsoft Goober.app" the result for the EA would look like:

Some
Missing:
Microsoft Goober.app

Otherwise it would send back "All" or "None"
You should be able to modify this to work with any suite, I would think, and then use the results from the EA to gather systems that show up as either Some or None, depending on what it is you'd like to track.

This all being said, this is certainly not the only approach, and you've been given a few other options by people here. Still, I hope that helps, if this is the direction you choose to go in.

fedagain
Contributor

Hey, thank you all for the responses. There are some really great ideas here. About a year ago I did a smart group that was ONE group listing all the adobe apps, YES, it does bring the jss to a crawl!!!

Will definitely experiment with the EA, and thank you very much @mm2270 for the example code to start with!!

fedagain
Contributor

@mm2270

I'm stuck on something here using your script in the EA.

1.) Any special settings for the EA itself? I have it set as DATA TYPE = STRING, INVENTORY DISPLAY = GENERAL OR EA, INPUT TYPE = SCRIPT.

2.) I think my issue is with using it in a smart group and/or advanced computer search..... my issue I think is how to use it as criteria and what to use as a value. Maybe I'm looking at this entirely wrong.

Any help would be appreciated.

Thank you!!

mm2270
Legendary Contributor III

@fedagain I think your point 1 looks good to me. That's the same way I would set it up. It's possible the way you're expecting to get the results is the issue. You're going to need to use a Like operator for the Smart Group criteria. For example, something like

Adobe CC Installed | like | Some
or
Adobe CC Installed | like | None

The above would or should gather Macs that either don't have the entire Adobe CC suite installed (assuming you made the correct edits to the EA script) or none of them installed. Of course, you can have it look for just one of those results or even ones that report "All" for any that have the whole suite installed.

I would, after setting up the EA, take a single machine with Adobe CC installed, or some of them installed, etc and do a manual recon on the Mac sudo jamf recon Let that complete and then look at the Mac record to see what the EA shows. If the results look good, then it will be a matter of giving your Macs time to check in with inventory collections and gather that data. That last point is an important one. EAs only collect information on inventory collections (recons) You won't see any results on machines until they do that.

If you're still having trouble after the above steps, maybe post the edited script you're using here so we can look at it and see if there's an issue with it.

fedagain
Contributor

@mm2270

That explained it to me.... Thank you!

I was thinking incorrectly..... was thinking that the "Smart Group" was going to be an automatic update.... I see now that the manual recon or inventory check interval needs to run.

Anyway, I have your script working for me checking Office... I will now clone and modify to check the Adobe applications.

Thanks again!

donmontalvo
Esteemed Contributor III

FWIW we move any EA that takes longer than 0.1 seconds to complete over to a daily policy script, and have an EA to scoop up whatever file the script outputs.

--
https://donmontalvo.com