টার্মিনাল কমান্ড দিয়ে কোনও ম্যাকের মডেল বছর নির্ধারণ করা যায়?


55

কেউ কি এমন টার্মিনাল কমান্ড জানেন যা আমাকে আমার ম্যাকের মডেল দেয়?

উদাহরণস্বরূপ - "ম্যাকবুক প্রো, রেটিনা, 13 ইঞ্চি, মিড 2013" বা "ম্যাকবুক প্রো, শেষ 2009" বা "ম্যাক মিনি, শুরুর 2010"।

এই তথ্যটি সিস্টেমপ্রফিলার ( /usr/sbin/system_profiler SPHardwareDataType) তে বিদ্যমান নেই , তবে ওএস এক্স 10.7 এবং ওএস এক্স 10.8 এ আপনি "এই ম্যাক সম্পর্কে" উইন্ডোতে "আরও তথ্য ..." ক্লিক করার সময় সেই তথ্যটি দেখতে পাবেন।


1
আমি মনে করি না যে ম্যাককে সরাসরি "দেরী 2009" হিসাবে চিহ্নিত করার জন্য একটি আদেশ রয়েছে। তবে এটি মডেল আইডেন্টিফায়ার থেকে নেওয়া যেতে পারে, ব্যাখ্যাটির জন্য আমার উত্তর দেখুন। But in OS X 10.7 and 10.8...বাক্য বলতে কী বোঝ? আমি যখন এই ম্যাক উইন্ডোটি সম্পর্কে সন্ধান করি তখন আমি এমন কিছু দেখতে পাই না যা ২০০৯ এর শেষের দিকে বা অনুরূপ কিছু বলে।
সারু লিন্ডেস্টকে

2
@BartArondson - 10.8 এর জন্য সম্পর্কে এই Mac পর্দায় পরের এক লাইন তারপর মরহুম 2012 ম্যাক মিনি দেখায়
মার্ক

আহ আমি এখন এটি দেখতে। আপনি যখন ক্লিক করেন About This Macএবং তারপরে এটি হয় More Info...। আপনার টার্মিনালে কীভাবে সেই তথ্য পাবেন সে সম্পর্কে আমার কোনও ধারণা নেই।
সারু লিন্ডেস্টকে

উত্তর:


68

আপনি অপ্রত্যক্ষভাবে একটি ওয়েব পৃষ্ঠা এবং কার্ল কমান্ড থেকে এই তথ্যটি পেতে পারেন। অতীতে এই ইউআরএলটি নামিয়ে নেওয়া হয়েছে এবং রেট সীমাবদ্ধ করা হয়েছে এবং এই ব্যবহার রোধ করতে কিছু ধরণের ক্যাপচা পিছনে রেখে দেওয়া হয়েছে, সুতরাং আপনাকে এই ক্ষেত্রে https://checkcoverage.apple.com/ এর মতো অন্যান্য উপায় অবলম্বন করতে হবে ।

আপনার সিরিয়াল সংখ্যাটি 11 বা 12 অক্ষর দীর্ঘ কিনা তার উপর নির্ভর করে যথাক্রমে শেষ 3 বা 4 টি অক্ষর নিন এবং ? সিসি = এক্সএক্সএক্সএক্সএক্সএক্সএক্সএর পরে নিম্নলিখিত ইউআরএলটিতে এটি খাওয়ান । যদি আপনার ক্রমিক সংখ্যা 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-
)

এবং তারপরে কীটির অংশটি কাটাতে সেডের মাধ্যমে আউটপুট চালান

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 হিসাবে চলে গেছে (এবং সম্ভবত আগেও) সুতরাং উপরের কৌশলটি আমি জানি এটি কেবলমাত্র বর্তমান ওএসে কাজ করে তৃতীয় পক্ষের লাইব্রেরি ছাড়াই।

কিছু সুন্দর তৃতীয় পক্ষের লাইবারারিগুলি এটির চেহারা দেয়:

নোট করুন যে 2017 সালের নভেম্বর পর্যন্ত, অ্যাপল এই পরিষেবাটির জন্য httpsওভারের ব্যবহারকে বাধ্য করেছে http


আরেকটি প্রশ্ন. আপনি যদি আমাকে শেষ বিকল্পটি টার্মিনালে দিয়ে থাকেন তবে আমি এটি পেয়েছি: <? XML version = "1.0" encoding = "utf-8"?> <root> <name> সিপিইউর নাম </name> <configCode> iMac (27) -আঞ্চ, দেরী ২০০৯) </ কনফিগকোড << লোকাল> এন_ ইউএস </ লোকালে> </root> "just" কী কেবল "(27 ইঞ্চি, শেষ 2009)" পাওয়া সম্ভব? ট্যাঙ্কস: পি
ম্যাক

সুতরাং, আরও তথ্য স্ক্রিনটি (ওপি উল্লিখিত এক) কোনও অন-লাইন ডাটাবেস থেকে এর তথ্য পায়? বিপণনের নামটি যদি সেখানে প্রদর্শিত হয় তবে তা কি স্থানীয়ভাবে সংরক্ষণ করা যায় না?
সারু লিন্ডেস্টকে

আমি মনে করি এটি একটি ডাটাবেসে রয়েছে। তবে আমার ক্ষেত্রে এটি কোনও সমস্যা নয়: পি তবে আমি যদি এটি ইন্টারনেট ছাড়াই পেতে পারি তবে অবশ্যই এটি দুর্দান্ত। তবে আমি যদি কেবল "(27 ইঞ্চি, 2009 এর শেষ দিকে) পাঠ্যটি পাই তবে এটি দুর্দান্ত হবে! সম্মান
ম্যাক

আমার ধারণা সিস্টেমটি রেজিস্ট্রেশনের সময় এটি ক্যাশে করে বা তথ্য পাওয়ার জন্য কোনও ব্যক্তিগত অভ্যন্তরীণ এসডিকে রয়েছে। এটি প্রাইভেট ফ্রেমওয়ার্ক সার্ভারকিটে থাকত - সুতরাং এটি স্পষ্টতই অনথিভুক্ত এবং ইতিমধ্যে পরিবর্তিত হয়েছে। আমি জানি যে ম্যাক কোনও ইন্টারনেট সংযোগ ছাড়াই তথ্যটি প্রদর্শন করতে পারে - তবে আমি সত্যই জানি না যে এটি ইনস্টল করার সময় এবং হার্ড কোডডে ক্যাশেড বা নির্ধারিত কিনা।
bmike

2
sysctl -n hw.modelনীচে উল্লিখিত ব্যবহারের অনুরূপ , ioreg -c IOPlatformExpertDevice -d 2 | awk -F\" '/IOPlatformSerialNumber/{print $(NF-1)}'ক্রমিক নম্বর পাওয়ার জন্য দ্রুত কাজ করবে।
n8felton

34

আপনি কমান্ডটি ব্যবহার করতে পারেন

system_profiler SPHardwareDataType | grep "Model Identifier"

আপনার মেশিনের মডেল আইডি পেতে টার্মিনালে
তারপরে আপনি এই আইডিটি এই সাইটে প্রবেশ করতে পারেন যা নির্দিষ্ট মডেলটি চালু হয়েছিল যে মাস এবং বছর তালিকাভুক্ত করবে।

নীচের মন্তব্যে উল্লিখিত হিসাবে, নিম্নলিখিত কমান্ডটি আরও দ্রুত:

sysctl hw.model

4
system_profiler SPHardwareDataType | grep "Model Identifier"সম্পূর্ণ প্রোফাইলারের তুলনায় অনেক দ্রুত সঞ্চালিত হয়, তবে এখনও ওপি যেমনটি বলেছে তেমন বিপণন নামটি দেয় না। কমান্ডের জন্য আমার উত্তরটি দেখুন যা আপনার উত্তরটির "চেহারা আপ" অংশটি টার্মিনাল বান্ধব উপায়ে কাজ করে।
bmike

1
আপনার উত্তরটি আপেল.স্ট্যাকেক্সেঞ্জার.কম / সেকশনস / 40243/ … এর জন্য স্পট হবে তবে ;-)
বিমিকে

4
একই আউটপুট জন্য, sysctl hw.modelউপরের কমান্ড চেয়ে দ্রুত।
লিয়ালি

6

এল ক্যাপ্টেন এবং সিয়েরাতে, প্রতিটি মডেল শনাক্তকারীর জন্য তথ্যের একটি ডিক সহ একটি ব্যক্তিগত কাঠামোর একটি প্লিস্ট ফাইল রয়েছে; সেই ডিকের মধ্যে বিপণনের নাম অন্তর্ভুক্ত থাকে (এটির মধ্যে মডেল বছর রয়েছে)। আমি জানি না যে সেই ফাইলটি ওএস সংস্করণটি নিয়ে এসেছে তবে এটি স্নো চিতাবাঘে নয় (আমার কাছে এটিই কেবলমাত্র এল ক্যাপিটনের চেয়ে পুরানো)।

#! /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

সুতরাং, আপনি এটি (বা ওএস সংস্করণ পরীক্ষা করার পরে অন্যান্য ওএস সংস্করণগুলির জন্য অন্যান্য অনুরূপ কৌশলগুলি ব্যবহার করতে পারেন, যদি আপনি সেই কৌশলগুলি জানেন যা আমি করি না), এবং যদি তা প্রযোজ্য না হয় তবে আপনি সর্বদা পদ্ধতির দিকে ফিরে যেতে পারেন এর জন্য ইন্টারনেট অ্যাক্সেস প্রয়োজন।

এই ম্যাকটি যা দেখায় ঠিক তেমনটি একই নয়, যা আমার ক্ষেত্রে
ম্যাকবুক প্রো (রেটিনা, ১৩ ইঞ্চি, প্রারম্ভিক ২০১৫) হয়
যখন এটি
13 "ম্যাকবুক প্রো সাথে রেটিনা প্রদর্শন (প্রথম দিকে 2015) দেখায়
তবে মানব-পঠনযোগ্য পদগুলিতে , আমি মনে করি এটি যথেষ্ট কাছে।


আমি বুঝতে পারি যে এই উত্তরটি 2 বছরেরও বেশি পুরানো, তবে এটি মডেল শনাক্তকারীকে হার্ডকোডযুক্ত (লাইন 4, MacBookPro12,1) অর্জিত হয়েছে যার অর্থ এটি সর্বদা দাবি করে যে আপনি 2015 সালের প্রথম দিকে "
এমবিপি

3

খেলায় দেরি হলেও এখানে একটি পদ্ধতি:

hardware_model () {

  local hardware_mod=$(defaults read 
  ~/Library/Preferences/com.apple.SystemProfiler.plist 'CPU Names' \
  |cut -sd '"' -f 4 \
  |uniq)
}

এই ফাংশনটি একটি প্লিস্ট ফাইলটি পড়ে, CPU Namesসেই ফাইলটির মধ্যে সন্ধান করে:

{
    "CPU Names" =     {
        "J1GN-en-US_US" = "iMac (Retina 5K, 27-inch, 2017)";
    };
} 

, তারপরে ডিলিমিটার ব্যবহার "করে চতুর্থ ক্ষেত্রটি পার্স করে:

iMac (Retina 5K, 27-inch, 2017) 

ওএস এক্স এর বর্তমানে সমর্থিত সংস্করণগুলিতে কাজ করার জন্য পরীক্ষিত


3

প্লাস্টবাট্টি ব্যবহার করে এখানে কোনও গ্রেপ, সেড বা অ্যাজক-ওয়ার্ডনেস ছাড়াই এখানে একটি লাইনার রয়েছে।

/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)

-

আরেকটি একটি লাইনার যা কিছুটা আলাদা স্ট্রিং দেয়, এছাড়াও প্লিস্টবাডি ব্যবহার করে (একটি ছোট্ট বিড়াল দিয়ে):

/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)

এর জন্য উপরের কয়েকটি উত্তরের ক্রেডিট।


1

মিশ্রন Saaru 'একটি debugged সংস্করণের সাথে গুলি উত্তর রিচার্ড হ্যামিলটন এর আমি অনুসরণযোগ্য যার ওপরে 10,12 পুরনো 10.6 কাজ করে (যদিও 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

আমি এখানে যা পেয়েছিলাম তার কিছু নোট:

  • defaults10.6 এ কাজ করার জন্য আমাদের ".plist" ডোমেনটি বন্ধ করে দিতে হবে এবং শেল -fপরীক্ষায় এটি ম্যানুয়ালি পুনরায় যুক্ত করতে হবে
  • -nপতাকা sysctlএটি শুধুমাত্র মান ছাপে, আমাদেরকে কিছু সংরক্ষণ মানে sedবা awkকাজ

0

আমাদের কিছু 2019 এমবিপি রয়েছে যা ট্যাব্রিনডলে পোস্ট করা দুটি ওয়ান-লাইনারের জন্য বিভিন্ন বছরের মডেল ফেরত দেয়

sysctl -n hw.model2019 এর মডেলটির জন্য তার প্রথম ওয়ান-লাইনার (ব্যবহার করে ) 2018 রিটার্ন করেছে:

ভুল: 15 "থান্ডারবোল্ট 3 এবং টাচ আইডি (মধ্য 2018) সহ ম্যাকবুক প্রো

তবে তার দ্বিতীয় ওয়ান-লাইনার (ব্যবহার করে system_profiler SPHardwareDataType) সঠিক নামটি দেয়:

ডান: ম্যাকবুক প্রো (15 ইঞ্চি, 2019)


-7

এটি করা উচিত:

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
আপনার তালিকাভুক্ত আদেশগুলির মধ্যে কোনওটিই প্রশ্নকারীকে জিজ্ঞাসা করে do
সারু লিন্ডেস্টকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.