OSレベルから入手できるシリアル番号はありますか?


12

ネットワーク上で起動しているRaspberryPIハードウェアインスタンスを特定したいと思います。

大規模なソリューションのクライアントとして(10個だけでなく)LOTを使用する計画がありますが、すべてのSDイメージを再利用したいと思います。

OSのどこかのファイルに何らかのシリアルシリアルコードを配置しない限り、相互に識別する方法はありますか?

ところで 私はプログラミングにMONO / C#を使用していますが、PIが何らかの形でハードウェアのシリアル番号を持っているかどうか知りたいのですが?

回答:


3

C#Monoではこれをやっています:

private string GetRpiSerial()
{
    CommandSync("cat /proc/cpuinfo | grep Serial | cut -d ':' -f 2 > /home/pi/serial.txt");

    using (var sr = new StreamReader("/home/pi/serial.txt"))
    {
        return sr.ReadLine().Trim();
    }
}

public static void CommandSync(string cmd, string args)
{
    var info = new ProcessStartInfo();
    info.FileName = "/bin/bash";
    info.Arguments = string.Format("-c \"sudo {0} {1}\"", cmd, args);
    info.UseShellExecute = false;
    info.RedirectStandardOutput = true;

    var p = Process.Start(info);
    p.WaitForExit();
}

そして、どこでも取得:

var rpiSerial = GetRpiSerial();

この回答には、Remoの元の回答よりも優れています。最初に尋ねたとおり、C#のソリューションが含まれているためです。私たち全員のためにこれを作成することはあなたの非常に素晴らしい。
BerggreenDK

13

MPEGライセンスの購入に使用したのと同じ番号を使用できます。

MPEG-2ライセンスキーの引用:

シリアル番号を見つけるには、cat /proc/cpuinfo以下に示すようにコマンドラインで入力します。

pi@raspberrypi:~$ cat /proc/cpuinfo

Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 697.95
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7
Hardware        : BCM2708
Revision        : 1000002
Serial          : 000000000000000d

Serial あなたが探しているものです。


ああ、いいアイデア。これをMonoから取得する方法の手がかりはありますか?
BerggreenDK

唯一の問題は、クライアント/ユーザーがその目的のためだけにMPEGライセンスを購入する必要があることです。
BerggreenDK

@BerggreenDK。よく分からない。cpuinfoコマンドで表示されるシリアル番号は、CPUのシリアル番号です。MPEGライセンスを持っているかどうかは関係ありません。
Remo.D

1
いいえ、「00000 ... d」は単なる例です。あなたのラズベリーでそれをやってみてください、あなたはあなたのものを手に入れるでしょう。
Remo.D

1
これは、ラズベリーに固有のハードウェアコードです(2つあります)。ファイルベースではありません。Virtual Boxから持っていたら驚いたでしょう。
Remo.D

6

イーサネットアダプターのMACアドレスを使用できます。次のようなステートメントを使用して、変数に抽出します。

mysn=`ifconfig eth0 | grep HWaddr |sed -e's/.*HWaddr\s\(\S*\).*/\1/'`

いい提案。MONOからこれを取得する方法しかわからない場合。しかし、アイデアは素晴らしいです。オンボードLANについて考えることを完全に忘れていました。確かにMAC番号で十分です。System.Netライブラリからその情報を取得する方法を理解する必要があります。
BerggreenDK


1
ラズベリーのMACアドレスを変更できることに注意してください。これは、Raspberry PiのIDを絶対に確認する必要がない場合にのみ実行可能なソリューションです。cpuinfoで取得可能なCPUシリアルコードは変更できません。
-Remo.D

さて、それも素晴らしい点です。はい、一部のLANハードウェアでMACを変更できます。それは本当だ。しかし、誰かが私のSDCARDのクローンを作成してから、知らないうちに複数のクライアントに使用するのではないかと心配しています。これは、ソリューションの私のアーキテクチャにとっては悪いことです。
BerggreenDK

@TomG申し訳ありませんが、私はあなたのアイデアを本当に評価し、クライアントプログラムがクロスプラットフォームになるため、Raspberry PIハードウェアをアレントするデバイスを検出するための「フォールバック」として使用します。この場合、2つの答えをマークできるといいのですが。
BerggreenDK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.