İşletim sistemi seviyesinde bazı seri numaralar var mı?


12

Ağımda hangi RaspberryPI donanım örneğinin önyüklendiğini belirlemek istiyorum.

Daha büyük bir çözümde bir LOT (sadece 10 değil) istemci olarak kullanma planlarım var, ancak SD görüntüsünü hepsi için tekrar kullanmak istiyorum.

İşletim sisteminin herhangi bir yerinde bir dosyaya bir seri kodu yerleştirmedikçe, birbirlerinden ayırt etmenin herhangi bir yolu var mı?

Btw. Programlama için MONO / C # kullanıyorum, ancak PI'nın bir şekilde bir donanım seri numarasına sahip olup olmadığını merak ediyorum?

Yanıtlar:


3

C # Mono bunu yapıyorum:

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();
}

Ve aşağıdakilerle istediğiniz yere erişin:

var rpiSerial = GetRpiSerial();

Bu cevap Remo'nun orijinal cevabından daha iyidir, çünkü başlangıçta istediğim gibi C #'daki çözümü içerir. Bunu hepimiz için üretmeniz çok güzel.
BerggreenDK

13

MPEG lisansını satın almak için kullanılan numarayı kullanabilirsiniz.

MPEG-2 lisans anahtarından alıntı :

Seri numaranızı bulmak için cat /proc/cpuinfo, komut satırına aşağıda gösterildiği gibi yazın:

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 aradığınız şey bu.


Ahh, güzel fikir. Bunu Mono'dan nasıl alacağına dair bir fikrin var mı?
BerggreenDK

Tek sorun, istemcinin / kullanıcının yalnızca bu amaç için MPEG lisansını satın alması gerekmesidir.
BerggreenDK

@BerggreenDK. Ne demek istediğinden emin değilim. Cpuinfo komutuyla görünen seri numarası CPU'nun seri numarasıdır. MPEG lisansınız olsun ya da olmasın oradadır.
Şubat'ta 13:49

1
Hayır, '00000 ... d' sadece örnek olarak orada. Ahududu üzerinde yapmayı deneyin ve kendinizinkini alacaksınız.
Remo.D

1
Herhangi bir Ahududu için benzersiz bir donanım kodudur (bunlardan iki tane var), dosya tabanlı değil. Virtual Box'dan alsaydınız şaşırırdım.
Şubat'ta

6

Ethernet adaptörünün MAC adresini kullanabilirsiniz; bir değişkene ayıklamak için şöyle bir ifade kullanın:

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

Güzel bir öneri. Sadece bunu MONO'dan nasıl almam gerektiğini görebilseydim. Ama fikir harika. Tamamen yerleşik LAN hakkında düşünmeyi unutmuştu. MAC numaraları gerçekten yeterlidir. Bu bilgilerin System.Net kütüphanesinden nasıl alınacağını bulmanız yeterli.
BerggreenDK

Bunu
buldum

1
Not bunu yapabilirsiniz ahududu MAC adresini değiştirmek. Bu, sadece Raspberry Pi'nizin kimliğinden kesinlikle emin olmanız gerekmiyorsa uygun bir çözümdür. Cpuinfo ile elde edilebilen CPU seri kodu değiştirilemez.
Şubat'ta 13:56

tamam, bu da harika bir nokta. Evet, MAC bazı LAN donanımlarında değiştirilebilir. Bu doğru. Ama sadece birisinin SDCARD'ımı klonlayıp bilgim olmadan birden fazla müşteri için kullanmasından endişe duyuyorum. Bu benim çözüm mimarim için kötü olurdu.
BerggreenDK

Maalesef @TomG Fikrinizi gerçekten uyguladım ve bunu Raspberry PI donanımını istemci programım çapraz platform olarak algılayamayacak aygıtları tespit etmek için "geri çekilmek" olarak kullanacağım. Keşke bu durumda iki cevabı işaretleyebilseydim.
BerggreenDK
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.