OS 수준에서 사용할 수있는 일련 번호가 있습니까?


12

네트워크에서 어떤 RaspberryPI 하드웨어 인스턴스가 부팅되고 있는지 확인하고 싶습니다.

더 큰 솔루션에서 클라이언트로 LOT (10이 아닌)을 사용할 계획이지만 SD 이미지를 모두 재사용하고 싶습니다.

OS의 어딘가에 파일에 somekinda 직렬 코드를 배치하지 않는 한 서로를 식별하는 방법이 있습니까?

Btw. 프로그래밍에 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();

이 답변은 원래 요청 한대로 C #의 솔루션을 포함하므로 Remo의 원래 답변보다 훨씬 좋습니다. 우리 모두를 위해이 제품을 생산하는 것이 좋습니다.
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
모든 라즈베리에 고유 한 하드웨어 코드이며 (두 개가 있음) 파일 기반이 아닙니다. 나는 당신이 Virtual Box에서 가지고 있다면 놀랐을 것입니다.
Remo.D 2013

6

이더넷 어댑터의 MAC 주소를 사용할 수 있습니다. 변수로 추출하려면 다음과 같은 명령문을 사용하십시오.

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

좋은 제안입니다. MONO에서 어떻게 검색 해야하는지 볼 수 있다면. 그러나 아이디어는 훌륭합니다. 온보드 LAN에 대해 생각하는 것을 완전히 잊어 버렸습니다. MAC 번호는 충분합니다. System.Net 라이브러리에서 해당 정보를 가져 오는 방법을 알아야합니다.
BerggreenDK


1
라즈베리의 MAC 주소를 수정할 수 있습니다 . 이것은 Raspberry Pi의 정체성을 절대적으로 확신 할 필요가없는 경우에만 실행 가능한 솔루션입니다. cpuinfo로 얻을 수있는 CPU 직렬 코드는 변경할 수 없습니다.
Remo.D

알았어, 그것도 좋은 지적이다. 예, 일부 LAN 하드웨어에서 MAC을 변경할 수 있습니다. 사실입니다. 그러나 누군가 누군가 내 SDCARD를 복제 한 다음 내 지식없이 여러 클라이언트에 사용할 것이라고 걱정합니다. 솔루션의 아키텍처에는 좋지 않습니다.
BerggreenDK

@TomG 죄송합니다. 귀하의 아이디어를 진심으로 감사 드리며 클라이언트 프로그램이 크로스 플랫폼이 될 때 Raspberry PI 하드웨어가 아닌 장치를 감지하기 위해 "폴백"으로 사용할 것입니다. 이 경우 두 가지 답변을 표시 할 수 있기를 바랍니다.
BerggreenDK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.