88 votes

Peut-on déterminer l'année modèle d'un Mac avec une commande de terminal ?

Quelqu'un connaît-il une commande de terminal qui me donne le modèle de mon Mac ?

Par exemple : "MacBook Pro, Retina, 13 pouces, mi-2013" ou "MacBook Pro, fin 2009" ou "Mac Mini, début 2010".

Cette information n'existe pas dans le SystemProfiler ( /usr/sbin/system_profiler SPHardwareDataType ), mais dans OS X 10.7 et OS X 10.8, vous pouvez voir ces informations lorsque vous cliquez sur "Plus d'infos..." dans la fenêtre "À propos de ce Mac".

3voto

Piersg Points 11

Combinaison de Saaru avec une version déboguée de l'application Richard Hamilton J'obtiens ce qui suit, qui fonctionne de la 10.6 à la 10.12 (bien que la taille de l'échantillon pour la 10.6 ne concerne qu'une seule machine) et peut-être même plus tôt ou plus tard, et qui ne dépend pas d'une connexion à Internet et de l'absence de changement des serveurs d'Apple.

ATTRIBSFILE=/System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/English.lproj/SIMachineAttributes
if ! [ -f "${ATTRIBSFILE}.plist" ] ; then
  # 10.7 or 10.6
  ATTRIBSFILE=/System/Library/PrivateFrameworks/ServerKit.framework/Versions/A/Resources/English.lproj/XSMachineAttributes
fi
if [ -f "${ATTRIBSFILE}.plist" ]
then
    modelid="$(sysctl -n hw.model)"
    marketingModel="$(defaults read "${ATTRIBSFILE}" "${modelid}" |sed -n -e 's/\\//g' -e 's/.*marketingModel = "\(.*\)";/\1/p')"
    echo "${marketingModel}"
else
    echo "can't use offline method to find marketing name on this OS version"
fi

Quelques notes sur ce que j'ai découvert pour en arriver là :

  • Nous devons supprimer ".plist" du domaine pour defaults pour fonctionner dans 10.6, et donc le ré-adjoindre manuellement au shell -f tests
  • le site -n pour sysctl signifie qu'il n'imprime que la valeur, ce qui nous permet d'économiser un peu d'argent. sed o awk trabajo

2voto

andreyne Points 3652

Ma seule phrase.

curl -s https://support-sp.apple.com/sp/product?cc=$( ioreg -l | grep IOPlatformSerialNumber | awk '{print $4}' | sed 's|"||g' | cut -b9-13 ) | sed "s@.*<configCode>\(.*\)</configCode>.*@\1@"

Sortie :

MacBook Pro (15 pouces, fin 2011)

2voto

Brendan Points 1

Les anciennes réponses utilisant la méthode en ligne (sp-support.apple.com) ne fonctionnent plus avec le format de numéro de série aléatoire d'Apple. Donc 2021 Macs avec M1, M1 Pro et M1 Max. J'ai créé une nouvelle méthode qui utilise des identifiants matériels et des données extraites du site d'assistance d'Apple pour obtenir le nom commercial.

Voir ici : https://github.com/quacktacular/mac-device-id-to-model

Utilisation :

# Determine the model and year:
DEIVCE_IDENTIFIER=$(sysctl hw.model | awk '{print $NF}')
DEVICE_MODEL_CURL=$(curl -s "https://raw.githubusercontent.com/quacktacular/mac-device-id-to-model/main/models.txt" | grep "$DEIVCE_IDENTIFIER")
if [[ $DEVICE_MODEL_CURL = *"("*")"* ]]; then
  DEVICE_MODEL=$( echo $DEVICE_MODEL_CURL | cut -f1 -d"|" ) 
  DEVICE_YEAR=$( echo "$DEVICE_MODEL" | grep -o -E '[0-9][0-9][0-9][0-9]' )
else
  DEVICE_MODEL="Unknown Mac"
  DEVICE_YEAR="N/A"
fi

# Now you can use the variables:
echo $DEVICE_MODEL
echo $DEVICE_YEAR

2voto

fredfjohnsen Points 1

Recueillir l'année auprès de Mac Marketing Nom du modèle https://community.jamf.com/t5/jamf-pro/collect-year-from-mac-marketing-model-name/td-p/250495

#!/bin/bash

# variables

crntusr="$(/usr/bin/stat -f %Su /dev/console)"
ioprdnm="$(/usr/sbin/ioreg -ar -d1 -k product-name)"
srlnmbr="$(/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/awk '/Serial/{print substr($NF,9)}')"
valarch="$(/usr/bin/uname -m)"
valbrnd="$(/usr/sbin/sysctl -n machdep.cpu.brand_string)"
valoahd="$(/usr/bin/pgrep -ail oahd)"
plistsp="/Users/$crntusr/Library/Preferences/com.apple.SystemProfiler.plist"

# if the cpu is Apple Silicon collect the Marketing Model string from ioreg
# if the cpu is Intel collect the Marketing Model string from com.apple.SystemProfiler.plist
# if com.apple.SystemProfiler.plist does not exist create it then collect the string

if [ "$valarch" = 'arm64' ] || [ -n "$valoahd" ] || ! echo "$valbrnd" | /usr/bin/grep -q 'Intel'
then
    mrktmdl=($(/usr/libexec/PlistBuddy -c 'print 0:product-name' /dev/stdin <<< "$ioprdnm"))
elif [ -e "$plistsp" ]
then
    mrktmdl=($(/usr/libexec/PlistBuddy -c "print 'CPU Names':$srlnmbr-en-US_US" "$plistsp"))
else
    /usr/bin/open '/System/Library/CoreServices/Applications/About This Mac.app'; /bin/sleep 2
    /usr/bin/pkill -ail 'System Information'; /bin/sleep 2
    /usr/bin/killall cfprefsd; /bin/sleep 2
    mrktmdl=($(/usr/libexec/PlistBuddy -c "print 'CPU Names':$srlnmbr-en-US_US" "$plistsp"))
fi
/bin/sleep 1

# if none of those methods work collect the Model Identifier, exit

if [ -z "${mrktmdl[*]}" ] || echo "${mrktmdl[*]}" | /usr/bin/grep "File Doesn't Exist"
then
    echo "<result>$(/usr/sbin/sysctl -n hw.model)</result>"
    exit
fi

# parse the string as a space-separated array to match year with regex

for i in "${mrktmdl[@]}"
do
    if echo "$i" | /usr/bin/grep -Eq '^[2][0-9]{3}'
    then
        mdlyear="$(echo "$i" | /usr/bin/sed 's/ //g;s/,//g;s/;//g;s/"//g;s/)//g;s/(//g')"
        break
    fi
done

# compare year collected to year set as "too old"

if [ "$mdlyear" -lt "$(($(/bin/date +%Y)-7))" ]
then
    result="$mdlyear"
fi
echo "<result>${result:-no}</result>"

1 votes

Lorsque vous vous référez à un autre matériel sur Internet avec un lien, il est préférable d'indiquer explicitement et avec autant de détails que nécessaire dans votre réponse la solution proposée dans ce matériel. Cela évitera que votre réponse ne devienne beaucoup moins utile si le lien auquel vous vous êtes référé est rompu.

-7voto

JoeriBe Points 174

Cela devrait le faire :

system_profiler | more
sw_vers
scutil --get ComputerName
sw_vers | awk -F':\t' '{print $2}' | paste -d ' ' - - -
sysctl -n hw.memsize | awk '{print $0/1073741824" GB RAM"}'
sysctl -n machdep.cpu.brand_string

3 votes

Aucune des commandes que vous avez énumérées ne fait ce que l'auteur de la question demande.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X