아무도 내 Mac 모델을 제공하는 터미널 명령을 알고 있습니까?
예 : “MacBook Pro, Retina, 13 인치, 2013 년 중반”또는 “MacBook Pro, Late 2009″또는 “Mac Mini, Early 2010”.
해당 정보는 SystemProfiler ( /usr/sbin/system_profiler SPHardwareDataType
)에는 없지만 OS X 10.7 및 OS X 10.8에서는 “이 Mac 정보”창에서 “추가 정보 …”를 클릭하면 해당 정보를 볼 수 있습니다.
답변
웹 페이지 및 curl 명령에서이 정보를 간접적으로 얻을 수 있습니다. 과거에는이 URL이 삭제되어 속도가 제한되었으며 이러한 사용을 막기 위해 일종의 보안 문자를 사용 했으므로이 경우 https://checkcoverage.apple.com/ 과 같은 다른 방법을 사용해야 할 수도 있습니다 .
직렬 숫자가 11 자 또는 12 자인지 여부에 따라 각각 마지막 3 자 또는 4자를 가져와 ? cc = XXXX 부분 다음에 다음 URL로 공급하십시오 . 일련 번호가 12 자이고 DJWR로 끝나면 다음 명령을 발행하십시오.
curl https://support-sp.apple.com/sp/product?cc=DJWR
일련 번호를 얻으려면 다음 명령을 사용하십시오.
system_profiler SPHardwareDataType | awk '/Serial/ {print $4}'
따라서 단일 명령이 필요한 경우 인터넷을 쿼리하는 복잡한 명령이있을 수 있습니다.
curl https://support-sp.apple.com/sp/product?cc=$(
system_profiler SPHardwareDataType \
| awk '/Serial/ {print $4}' \
| cut -c 9-
)
그런 다음 sed를 통해 출력을 실행하여 주요 부분을 자릅니다.
curl -s https://support-sp.apple.com/sp/product?cc=$(
system_profiler SPHardwareDataType \
| awk '/Serial/ {print $4}' \
| cut -c 9-
) | sed 's|.*<configCode>\(.*\)</configCode>.*|\1|'
이 매핑이 있는 개인 라이브러리 파일 이 있었으므로 오프라인으로 참조 할 수 있었지만 10.8.3 (그리고 이전 버전)으로 사라 졌음을 알았으므로 위의 트릭은 내가 현재 OS에서 작동하는 유일한 방법입니다. 타사 라이브러리가 없습니다.
멋진 써드 파티 라이브러리는 다음과 같은 기능을 제공합니다.
- 파이썬 코드 https://github.com/MagerValp/MacModelShelf
- JSON 매핑 https://github.com/krypted/swiftwarrantylookup/blob/master/src/swiftMacWarranty/model_snippets.json
2017 년 11 월 현재, Apple 은이 서비스 https
에 http
대해 over 를 사용하도록 강요했습니다 .
답변
당신은 명령을 사용할 수 있습니다
system_profiler SPHardwareDataType | grep "Model Identifier"
터미널에서 컴퓨터의 모델 ID를 가져옵니다.
그런 다음 이 사이트 에 해당 ID를 입력 하면 특정 모델이 시작된 월과 연도가 표시됩니다.
아래 주석에서 언급했듯이 다음 명령이 훨씬 빠릅니다.
sysctl hw.model
답변
El Capitan과 Sierra에는 각 모델 식별자에 대한 정보가 담긴 개인 프레임 워크에 plist 파일이 있습니다. dict에는 마케팅 이름 (모델 연도가 포함됨)이 포함됩니다. 특정 파일과 함께 제공된 OS 버전을 모르지만 Snow Leopard에는 없습니다 (El Capitan보다 오래된 것만 있습니다).
#! /bin/ksh
if [ -f /System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/English.lproj/SIMachineAttributes.plist ]
then
marketingModel="$(modelid="$(system_profiler SPHardwareDataType 2>/dev/null|awk '/Model Identifier:/ {print $NF}')"
defaults read /System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/English.lproj/SIMachineAttributes.plist "MacBookPro12,1"|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
그래서, 당신은 (또는 OS 버전을 확인한 후 다른 OS 버전에 대한 다른 유사한 트릭을 사용할 수 있습니다. 인터넷 액세스가 필요합니다.
이 정확히 동일하지 않습니다 어떤 내 경우에이 맥 쇼, 약
맥북 프로 (망막, 13 인치, 2015 년 초)
이 보여주고있는 동안
(2015 초) 레티 나 디스플레이 프로 13 “맥북
하지만 사람이 읽을 수있는 용어를 나는 그것이 충분히 가깝다고 생각합니다.
답변
게임에 늦었지만 여기에 한 가지 접근법이 있습니다.
hardware_model () {
local hardware_mod=$(defaults read
~/Library/Preferences/com.apple.SystemProfiler.plist 'CPU Names' \
|cut -sd '"' -f 4 \
|uniq)
}
.
이 함수는 plist 파일을 읽고 CPU Names
해당 파일 내 에서 찾습니다 .
{
"CPU Names" = {
"J1GN-en-US_US" = "iMac (Retina 5K, 27-inch, 2017)";
};
}
그런 다음 구분 기호를 사용하면 "
네 번째 필드를 구문 분석합니다.
iMac (Retina 5K, 27-inch, 2017)
현재 지원되는 OS X 버전에서 작동하도록 테스트되었습니다.
답변
여기에 grep, sed 또는 awk-wardness가없는 PlistBuddy를 사용하는 하나의 라이너가 있습니다.
/usr/libexec/PlistBuddy -c "print :$(sysctl -n hw.model):_LOCALIZABLE_:marketingModel" /System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/English.lproj/SIMachineAttributes.plist
이것은 다음과 같은 것을 반환합니다 :
15" MacBook Pro with Thunderbolt 3 and Touch ID (Mid 2017)
–
PlistBuddy (약간의 awk)를 사용하여 약간 다른 문자열을 생성하는 또 하나의 라이너 :
/usr/libexec/PlistBuddy -c "print :'CPU Names':$(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}' | cut -c 9-)-en-US_US" ~/Library/Preferences/com.apple.SystemProfiler.plist
MacBook Pro (15-inch, 2017)
이에 대한 위의 답변 중 몇 가지를 인정합니다.
답변
Saaru 의 답변과 디버깅 된 Richard Hamilton 의 버전을 결합하면 10.6 ~ 10.12 (10.6의 샘플 크기는 하나의 시스템이지만)와 이전 / 이후의 연결에 의존하지 않는 다음과 같은 결과를 얻습니다. 인터넷과 애플의 서버는 변하지 않습니다
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
내가 여기에 도착한 것에 대한 몇 가지 메모 :
defaults
10.6에서 작동 하려면 도메인에서 “.plist”를 제거해야 하므로 쉘-f
테스트에 수동으로 다시 추가해야합니다.-n
에 플래그sysctl
는 우리에게 약간의 절약 값만 출력을 의미sed
하거나awk
작업을
답변
tabrindle이 게시 한 두 개의 단일 라이너에 대해 서로 다른 연도 모델을 반환하는 2019 MBP가 있습니다.
그의 첫 번째 원 라이너 (를 사용하여 sysctl -n hw.model
)는 2019 모델에 대해 2018을 반환합니다.
잘못된 정보 : Thunderbolt 3 및 Touch ID가 포함 된 15 “MacBook Pro (Mid 2018)
그러나 그의 두 번째 한 줄짜리 (을 사용하여 system_profiler SPHardwareDataType
)는 올바른 이름을 반환합니다.
오른쪽 : MacBook Pro (2019 년 15 인치)