mirror of
https://github.com/MLBZ521/MacAdmin.git
synced 2026-09-17 14:10:39 +01:00
v1.8.0 = Proper support for Big Sur (Beta) and additional fixes
+ Proper preliminary support for Big Sur as far as the currently known system requirements + Fixed a few logic that would have caused the wrong OS version to be reported + Fixed a few formatting issues/inconsistencies
This commit is contained in:
@@ -3,11 +3,12 @@
|
||||
###################################################################################################
|
||||
# Script Name: jamf_ea_LatestOSSupported.sh
|
||||
# By: Zack Thompson / Created: 9/26/2017
|
||||
# Version: 1.7.0 / Updated: 3/23/2020 / By: ZT
|
||||
# Version: 1.8.0 / Updated: 10/21/2020 / By: ZT
|
||||
#
|
||||
# Description: A Jamf Extension Attribute to check the latest compatible version of macOS.
|
||||
#
|
||||
# System Requirements can be found here:
|
||||
# Big Sur - https://www.apple.com/macos/big-sur-preview/
|
||||
# Catalina - https://support.apple.com/en-us/HT201475
|
||||
# Mojave - https://support.apple.com/en-us/HT210190
|
||||
# * MacPro5,1's = https://support.apple.com/en-us/HT208898
|
||||
@@ -30,10 +31,14 @@
|
||||
requiredRAMCatalina=$(($minimumRAMCatalina * $convertToGigabytes))
|
||||
requiredFreeSpace=$(($minimumFreeSpace * $convertToGigabytes))
|
||||
# Get the OS Version
|
||||
osVersion=$( /usr/bin/sw_vers -productVersion | /usr/bin/awk -F '.' '{print $2"."$3}' )
|
||||
osVersion=$( /usr/bin/sw_vers -productVersion )
|
||||
osMajorVersion=$( echo "${osVersion}" | /usr/bin/awk -F '.' '{print $1}' )
|
||||
osMinorPatchVersion=$( echo "${osVersion}" | /usr/bin/awk -F '.' '{print $2"."$3}' )
|
||||
# Get the Model Type and Major Version
|
||||
modelType=$( /usr/sbin/sysctl -n hw.model | /usr/bin/sed 's/[^a-zA-Z]//g' )
|
||||
modelMajorVersion=$( /usr/sbin/sysctl -n hw.model | /usr/bin/sed 's/[^0-9,]//g' | /usr/bin/awk -F ',' '{print $1}' )
|
||||
modelVersion=$( /usr/sbin/sysctl -n hw.model | /usr/bin/sed 's/[^0-9,]//g' )
|
||||
modelMajorVersion=$( echo "${modelVersion}" | /usr/bin/awk -F ',' '{print $1}' )
|
||||
modelMinorVersion=$( echo "${modelVersion}" | /usr/bin/awk -F ',' '{print $2}' )
|
||||
# Get RAM Info
|
||||
systemRAM=$( /usr/sbin/sysctl -n hw.memsize )
|
||||
RAMUpgradeable=$( /usr/sbin/system_profiler SPMemoryDataType | /usr/bin/awk -F "Upgradeable Memory: " '{print $2}' | /usr/bin/xargs )
|
||||
@@ -45,21 +50,45 @@
|
||||
|
||||
modelCheck() {
|
||||
|
||||
if [[ $modelMajorVersion -ge $5 && $(/usr/bin/bc <<< "${osVersion} >= 8") -eq 1 ]]; then
|
||||
if [[ $modelMajorVersion -ge $5 && ( $(/usr/bin/bc <<< "${osMajorVersion} >= 11") -eq 1 || $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 9") -eq 1 ) ]]; then
|
||||
echo "Big Sur"
|
||||
elif [[ $modelMajorVersion -ge $4 && $(/usr/bin/bc <<< "${osVersion} >= 8") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $4 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 9") -eq 1 ]]; then
|
||||
echo "Catalina"
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osVersion} >= 8") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $4 && $(/usr/bin/bc <<< "${osMinorPatchVersion} <= 8") -eq 1 ]]; then
|
||||
echo "Mojave / OS Limitation" # (Current OS Limitation, 10.15 Catalina)
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 8") -eq 1 ]]; then
|
||||
echo "Mojave"
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osVersion} >= 8") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 8") -eq 1 ]]; then
|
||||
echo "High Sierra"
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osVersion} >= 7.5") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 7.5") -eq 1 ]]; then
|
||||
echo "Sierra / OS Limitation" # (Current OS Limitation, 10.13 Compatible)
|
||||
elif [[ $modelMajorVersion -ge $1 && $(/usr/bin/bc <<< "${osVersion} >= 6.8") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $1 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 6.8") -eq 1 ]]; then
|
||||
echo "El Capitan"
|
||||
else
|
||||
echo "<result>Current OS Not Supported</result>"
|
||||
exit 0
|
||||
echo "Current OS Not Supported"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# Apple just had to make one iMac model (14,4) support Big Sur...
|
||||
iMacModelCheck() {
|
||||
|
||||
if [[ $modelMajorVersion -ge $5 && $modelMinorVersion -ge 4 && ( $(/usr/bin/bc <<< "${osMajorVersion} >= 11") -eq 1 || $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 9") -eq 1 ) ]]; then
|
||||
echo "Big Sur"
|
||||
elif [[ $modelMajorVersion -ge $4 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 9") -eq 1 ]]; then
|
||||
echo "Catalina"
|
||||
elif [[ $modelMajorVersion -ge $4 && $(/usr/bin/bc <<< "${osMinorPatchVersion} <= 8") -eq 1 ]]; then
|
||||
echo "Mojave / OS Limitation" # (Current OS Limitation, 10.15 Catalina)
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 8") -eq 1 ]]; then
|
||||
echo "Mojave"
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 8") -eq 1 ]]; then
|
||||
echo "High Sierra"
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 7.5") -eq 1 ]]; then
|
||||
echo "Sierra / OS Limitation" # (Current OS Limitation, 10.13 Compatible)
|
||||
elif [[ $modelMajorVersion -ge $1 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 6.8") -eq 1 ]]; then
|
||||
echo "El Capitan"
|
||||
else
|
||||
echo "Current OS Not Supported"
|
||||
fi
|
||||
|
||||
}
|
||||
@@ -67,12 +96,12 @@ modelCheck() {
|
||||
# Because Apple had to make Mojave support for MacPro's difficult... I have to add complexity to the original "simplistic" logic in this script.
|
||||
macProModelCheck() {
|
||||
|
||||
if [[ $modelMajorVersion -ge $4 ]]; then
|
||||
# For MacPro 6,1 (2013/Trash Cans), these should be supported no matter the existing state, since they wouldn't be compatible with any OS that is old, nor have incompatible hardware.
|
||||
echo "Catalina"
|
||||
if [[ $modelMajorVersion -ge $5 ]]; then
|
||||
# For MacPro 6,1 (2013/Trash Cans) and newer, these should be supported no matter the existing state, since they wouldn't be compatible with any OS that is old, nor have incompatible hardware.
|
||||
echo "Big Sur"
|
||||
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osVersion} >= 13.6") -eq 1 ]]; then
|
||||
# Supports Mojave, but required Metal Capabable Graphics Cards and FileVault must be disabled.
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 13.6") -eq 1 ]]; then
|
||||
# Supports Mojave, but required Metal Capable Graphics Cards and FileVault must be disabled.
|
||||
macProResult="Mojave"
|
||||
|
||||
# Check if the Graphics Card supports Metal
|
||||
@@ -87,15 +116,14 @@ macProModelCheck() {
|
||||
|
||||
echo "${macProResult}"
|
||||
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osVersion} <= 13.6") -eq 1 ]]; then
|
||||
# Supports Mojave or newer, but requires a stepped upgrade path .
|
||||
elif [[ $modelMajorVersion -ge $3 && $(/usr/bin/bc <<< "${osMinorPatchVersion} <= 13.5") -eq 1 ]]; then
|
||||
|
||||
echo "High Sierra / OS Limitation"
|
||||
echo "High Sierra / OS Limitation" # Supports Mojave or newer, but requires a stepped upgrade path
|
||||
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osVersion} >= 7.5") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $2 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 7.5") -eq 1 ]]; then
|
||||
echo "Sierra / OS Limitation" # (Current OS Limitation, 10.13 Compatible)
|
||||
|
||||
elif [[ $modelMajorVersion -ge $1 && $(/usr/bin/bc <<< "${osVersion} >= 6.8") -eq 1 ]]; then
|
||||
elif [[ $modelMajorVersion -ge $1 && $(/usr/bin/bc <<< "${osMinorPatchVersion} >= 6.8") -eq 1 ]]; then
|
||||
echo "El Capitan"
|
||||
|
||||
fi
|
||||
@@ -104,12 +132,12 @@ macProModelCheck() {
|
||||
##################################################
|
||||
# Check for compatibility...
|
||||
|
||||
# Each number passed to the below functions is the major model version for the model type.
|
||||
# The first parameter is for El Capitan, the second is for High Sierra, the third is for Mojave, and the forth is for Catalina.
|
||||
# Each number passed to the below functions is the minimum major model version for the model type.
|
||||
# The first parameter is for El Capitan, the second is for High Sierra, the third is for Mojave, the forth is for Catalina, and the fifth is for Big Sur.
|
||||
case $modelType in
|
||||
"iMac" )
|
||||
# Function modelCheck
|
||||
latestOSSupport=$( modelCheck 7 10 13 13 15 )
|
||||
# Function iMacModelCheck
|
||||
latestOSSupport=$( iMacModelCheck 7 10 13 13 14 )
|
||||
;;
|
||||
"MacBook" )
|
||||
# Function modelCheck
|
||||
@@ -128,7 +156,7 @@ case $modelType in
|
||||
latestOSSupport=$( modelCheck 3 4 6 6 7 )
|
||||
;;
|
||||
"MacPro" )
|
||||
# Function modelCheck
|
||||
# Function macProModelCheck
|
||||
latestOSSupport=$( macProModelCheck 3 5 5 6 6 )
|
||||
;;
|
||||
"iMacPro" )
|
||||
@@ -158,13 +186,13 @@ if [[ "${latestOSSupport}" == "Catalina" ]]; then
|
||||
latestOSSupport="Mojave"
|
||||
else
|
||||
# Device does not have enough RAM to support any upgrade!?
|
||||
echo "<result>Not Upgrableable</result>"
|
||||
echo "<result>Not Upgradable</result>"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
else
|
||||
# Device does not have enough RAM to upgrade currently, but RAM capacity can be increased.
|
||||
finalResult+="Insufficient RAM"
|
||||
finalResult+=" / Insufficient RAM"
|
||||
fi
|
||||
|
||||
fi
|
||||
@@ -177,7 +205,7 @@ else
|
||||
|
||||
if [[ "${RAMUpgradeable}" == "No" ]]; then
|
||||
# Device does not have enough RAM to support any upgrade!?
|
||||
echo "<result>Not Upgrableable</result>"
|
||||
echo "<result>Not Upgradable</result>"
|
||||
exit 0
|
||||
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user