#! /bin/ksh # credit for trick to find marketing name to "bmike" on the page # http://apple.stackexchange.com/questions/98080/can-a-macs-model-year-be-determined-via-terminal-command export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin" function vers2codename { case "${1}" in 10.0|10.0.*) echo "Cheetah";; 10.1|10.1.*) echo "Puma";; 10.2|10.2.*) echo "Jaguar";; 10.3|10.3.*) echo "Panther";; 10.4|10.4.*) echo "Tiger";; 10.5|10.5.*) echo "Leopard";; 10.6|10.6.*) echo "Snow Leopard";; 10.7|10.7.*) echo "Lion";; 10.8|10.8.*) echo "Mountain Lion";; 10.9|10.9.*) echo "Mavericks";; 10.10|10.10.*) echo "Yosemite";; 10.11|10.11.*) echo "El Capitan";; 10.12|10.12.*) echo "Sierra";; 10.13|10.13.*) echo "High Sierra";; 10.14|10.14.*) echo "Mojave";; *) echo "version \"${1}\" name unknown";; esac } hardwareVersion="$( curl -s https://support-sp.apple.com/sp/product?cc="$(system_profiler SPHardwareDataType 2>/dev/null | awk '/Serial/ {print $4}' | cut -c 9-)" 2>/dev/null | sed 's|.*\(.*\).*|\1|')" productVersion="$(sw_vers -productVersion)" if [ -n "${hardwareVersion}" ]; then echo "Hardware Version: ${hardwareVersion}" fi system_profiler SPHardwareDataType 2>/dev/null|sed -n -e '/Model Identifier:/s/^ *//p' echo "$(sw_vers -productName) ${productVersion} $(sw_vers -buildVersion) ($(vers2codename "${productVersion}"))" ServerVersionFile=/Applications/Server.app/Contents/version.plist if [ -f "${ServerVersionFile}" -a -r "${ServerVersionFile}" ]; then print -n "Server Version: " defaults read "${ServerVersionFile}" CFBundleShortVersionString fi if [ -x /usr/bin/csrutil ]; then csrutil status fi if xcode-select -print-path >/dev/null 2>&1 then xcodebuild -version|awk 'NR==1 {prod_vers=$0} NR==2 {build=$NF} END {printf "%s %s\n",prod_vers,build}' fi if whence port >/dev/null 2>&1 then echo "MacPorts $(port version)" if [ -d /usr/local/. ]; then echo "warning: /usr/local exists" fi fi