Posted on 01-17-2025 12:46 PM
I don't know if this is possible, but does anyone have a way to create a smart group where the operating system has done a major version upgrade in the past 24 hours?
I'm prepping for a Sequoia rollout and want to have some idea of which machines upgrade each day. I use an erase-install Self Service process for the upgrades but the policy never technically finishes as it gets killed when the Sequoia installer restarts, so I can't rely on policy logs.
01-17-2025 01:55 PM - edited 01-17-2025 01:57 PM
@jamiesmithJAX Not with anything built-in to Jamf Pro, but you could have a policy triggered on login that does a recon and use a Smart Group for Macs already on Sequoia as an exclusion for your Self Service policy.
BTW, you can avoid the problem of running erase-install via a policy not allowing the policy to complete by using https://github.com/grahampugh/erase-install/blob/main/erase-install-launcher.sh as a stub script to launch erase-install instead of running it directly.
Posted on 01-19-2025 08:11 PM
Consider using a Custom EA to obtain this data. You could develop a script to write the OS version to a text file daily and compare the values from the last two days. Any change in the value could indicate a macOS update. This approach enables the identification of devices receiving daily updates.
a month ago
The software update command has a history function. A simple script could search that list for any matches to macOS and print the last 2 columns. Those can be reported back to Jamf as an EA and then searched against.
softwareupdate --history
Display Name Version Date
------------ ------- ----
macOS Sequoia 15.2 15.2 12/11/2024, 16:25:04
Just piecing something together I'd do it like this. You may need to clean it up some if you get more than one update recorded (this Mac was recently wiped/reloaded).
#!/bin/sh
# when did OS update run.sh
#
#
# Created by Ed C on 1/21/25.
#
# Get the software update history
history=$(/usr/sbin/softwareupdate --history)
# Extract the dates of macOS updates
macos_updates=$(echo "$history" | grep -E 'macOS' | awk '{print $(NF-1), $NF}')
# Get the most recent date
recent_update=$(echo "$macos_updates" | sort -r | head -n 1)
# Remove any commas from the result
recent_update=$(echo "$recent_update" | tr -d ',')
# Output the result in XML format for Jamf
echo "<result>$recent_update</result>"