ターミナルからプログラムでMacのシリアル番号を見つけるにはどうすればよいですか?


37

UNIXコマンドラインからシステムのシリアル番号を取得するには、どのコマンドを使用できますか?unameソフトウェアとハ​​ードウェアに関する情報を出力するので、スクリプトで使用するコマンドからシリアル番号を取得したいと思います。

回答:


55

system_profilerのコマンドは、(あなたが10.3以降であると仮定して)簡単に人間が読めるの直接の答えを提供していますが、使用することができますioregそれは一般的に速く完了するタスクのために。

system_profiler SPHardwareDataType は、コアハードウェア情報を含むデータ型であり、grepまたはawkを使用して、必要に応じてさらに物事を削減できます。

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

または

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

これらのコマンドの両方は、あなたがしたいそうならば、現代のSSDのMac上で実行するために0.5〜0.2秒かかるコマンドを最適化し、「削除あなたは0.005sかそこらであなたの答えを持つことができます。

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

2
ioreg一つは、私のMBPRに近い瞬間です。system_profiler私の古いものよりもこのMacの方がずっと遅いですが。
マークハンテ

system_profileは非常に遅く、ioregは非常に高速です。
user1735921

14

これも機能します…

ioreg -l | grep IOPlatformSerialNumber

表示したくないawk600行のioreg出力を取り除くために、バージョンよりも入力する方が確かに簡単です。(また-ダウン投票者を気にしないでください-一部の人々は本当に短い答えを好まないか、誰もがgrepとawkの仕組みを知っているわけではないことを忘れています。)
bmike

OK 知っておくといい。
MrPool 14

1
それは以前の回答であり、前の1に改善されないものを繰り返してい@MrPool
user151019

1
彼らはそれ自体が間違った票ではありません。誰かが行動を起こすのに十分な関心を持っていることを示すので、下票でも良いです。また、私がコメントを投稿したり、チャットに投稿しようとすると、私を完全に公平とは思わない票が表示されます。幸いなことに、アップ票は+10、ダウン票は-2であるため、物議を醸すもの(このような+2と-2のゼロバランスはまだ+16 repです)を投稿した場合、インターネットへようこそ;-)
bmike

1
そして、ユーザーが行うことはすべて説明なしで遅く、短い、マイナーな変更のみを投稿する場合(私があなたのポイントを推測した場合-grepを入力することはより明確で、短く、そして多くの人にとって十分です)、マークは正しいです彼らはそれをノックオフします。ほとんどの評判の高いユーザーは私の答えにコメントしますが、1人の担当者がそれを行うことを期待することはできません。今ではできます:-)
bmike

2

覚えやすくするために、大文字と小文字を区別しない検索を使用します。

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

警告:これは行を返します| "IOPlatformSerialNumber" = "YourSerialNumber"これは視覚的には問題ありませんが、スクリプトで使用する場合はawkにパイプする必要があります。
jasonology

1

C ++の例:

#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;
}

Ask Askへようこそ。本質的にコードのみを含む回答を投稿することは、それをどうするか、またはそれをどのように使用するかについての指示なしに、質の高い回答にはなりません。良い答えを書くにはどうすればいいですか?を読んでください回答を編集して、コードのコンパイル方法と使用方法を含めます。また、ツアーに参加してください
user3439894

:説明が存在しているアップルのテクニカルドキュメント、から撮影された注目に値するdeveloper.apple.com/library/archive/technotes/tn1103/...
燃えがらビスケット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.