Bir mac üzerindeki seri numarasını terminalden programlı olarak nasıl bulabilirim?


37

Sistemin seri numarasını unix komut satırından almak için hangi komutu kullanabilirim? Gibi unameirade çıkışı yazılım ve donanım hakkında bazı bilgiler, bir komut dosyasında kullanmak için bir komutun seri numarasını almak istiyorum.

Yanıtlar:


55

System_profiler komutu (eğer 10,3 veya daha yeni üzerinde olduğunu varsayarsak) kolayca Okunabilir var doğrudan cevap verir, ama aynı zamanda da kullanabilirsiniz IOREG genellikle daha hızlı tamamlar olarak görev için.

system_profiler SPHardwareDataType çekirdek donanım bilgilerini içeren veri türüdür ve gerektiğinde işlemleri daha da kısaltmak için grep veya awk komutunu kullanabilirsiniz:

system_profiler SPHardwareDataType | awk '/Serial/ {print $4}'

veya

ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'

Bu komutların her ikisi de modern SSD Mac'lerde çalıştırmak için 0,5 ile 0,2 saniye arasında sürebilir, bu nedenle komutu en iyi duruma getirmek ve kaldırmak istiyorsanız " cevabınızı 0,005'de sorabilirsiniz:

ioreg -c IOPlatformExpertDevice -d 2 | awk -F\" '/IOPlatformSerialNumber/{print $(NF-1)}'

2
ioregKimse benim MBPR üzerinde anlık yakındır. system_profilerbu macta daha eski olanlardan daha hızlı olmasına rağmen çok daha yavaş.
markhunte

system_profile çok yavaş, ioreg süper hızlı.
user1735921 15:18

14

Bu da işe yarıyor…

ioreg -l | grep IOPlatformSerialNumber

Görmek istemediğimiz awk600 ioregçıktı satırını çıkarmak için sürümden kesinlikle daha kolaydır . (ayrıca - aşağı seçmenlere
aldırış

Tamam, teşekkürler bmike, bana daha basit görünüyor, ancak doğru bir cevap için oy kullanmasını beklemiyordum. Bilmek güzel.
MrPool

1
@MrPool, önceki cevapta ne olduğunu tekrarladığında ve önceki cevapta
düzelmediğinde

1
Onlar kendi başlarına yanlış oy kullanmıyorlar. Aşağı oylar bile, birinin harekete geçmeye yeterince önem verdiğini gösterdiğinden iyidir. Ayrıca, beni toplam olarak adil bulmayan oylar gördüğümde, yorum yapmaya veya sohbete göndermeye çalışıyorum. İyi haber şu ki, yukarı oylar +10 ve aşağı oylar sadece -2 - yani tartışmalı bir şey yayınlarsanız (+2 ve -2 ile bu sıfır bakiye gibi, hala +16 temsilcidir) internete hoş geldiniz ;-)
bmike

1
Ve eğer işaretler doğruysa, bir kullanıcının yaptığı tüm açıklamalar yalnızca geç olmadan, kısa, küçük değişiklikler açıklamadan yayınlanırsa (eğer amacınızı tahmin edersem - grep yazmak hem daha açık, kısa hem de birçokları için yeterince iyidir) bu kullanıcıya ping edebilir ve sorabilirim onlar kesildi. En yüksek itibar sahibi kullanıcılar cevabımı yorumlayacak, ancak bunu yapmak için 1 rep ile yeni bir kullanıcı bekleyemeyiz, şimdi yapabilir miyiz :-)
bmike

2

Hatırlamayı kolaylaştırmak için küçük / küçük harf duyarlı bir arama kullanın:

ioreg -l | grep -i serialnumber | grep -i platform

Uyarı: bu bir çizgi döndürür | "IOPlatformSerialNumber" = "YourSerialNumber" Görsel olarak sorun değil, ancak bir komut dosyasında kullanırsanız awk'a yönlendirmeniz gerekir.
jasonology

1

C ++ örneği:

#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>

std::string 

getSerialNumber()

{

   CFStringRef serial;
    char buffer[32] = {0};
    std::string seriaNumber;

io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,
                                                          IOServiceMatching("IOPlatformExpertDevice"));
if (platformExpert)
{
    CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,
                                                                       CFSTR(kIOPlatformSerialNumberKey),
                                                                       kCFAllocatorDefault, 0);
    if (serialNumberAsCFString) {
        serial = (CFStringRef)serialNumberAsCFString;
    }
    if (CFStringGetCString(serial, buffer, 32, kCFStringEncodingUTF8)) {
        seriaNumber = buffer;
    }

    IOObjectRelease(platformExpert);
}
return seriaNumber;
}

Farklı sormaya hoş geldiniz. Lütfen esas olarak, yalnızca ne yapılacağına ya da nasıl kullanılacağına dair kaliteli bir cevap için ne yapılacağına dair hiçbir talimatı olmayan bir kod içeren bir cevap göndermeyi anlayın. Lütfen okumak için zaman ayırın Nasıl iyi bir cevap yazarım? ve ardından kodun derlenmesi ve nasıl kullanılacağına ilişkin talimatlar dahil etmek için cevabınızı düzenleyin. Ayrıca Tur atın .
user3439894

Bunun bir açıklamanın var olduğu Apple Teknik Dokümanlar'dan alındığına dikkat etmek
önemlidir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.