Есть ли какой-нибудь серийный номер, доступный на уровне ОС?

12

Я хотел бы определить, какой аппаратный экземпляр RaspberryPI загружается в моей сети.

У меня есть планы использовать LOT (не только 10) из них в качестве клиентов в более крупном решении, но я хотел бы повторно использовать SD-образ для них всех.

Есть ли какой-то способ идентифицировать их друг от друга, если я не помещу серийный код somekinda в файл где-нибудь в ОС?

Btw. Я использую MONO / C # для программирования, но мне просто интересно узнать, есть ли у PI аппаратный серийный номер или нет?

BerggreenDK
источник

Ответы:

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 #, как я и просил. Очень мило с вашей стороны подготовить это для всех нас.
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 это то, что вы ищете.

Remo.D
источник
Ааа, хорошая идея У вас есть какой-нибудь ключ к получению этого из Mono?
BerggreenDK
Единственная проблема заключается в том, что клиент / пользователь должен будет купить лицензию MPEG только для этой цели.
BerggreenDK
@BerggreenDK. Не уверен, что вы имеете в виду. Серийный номер, который появляется с командой cpuinfo, является серийным номером CPU. Это там, есть ли у вас лицензия MPEG или нет.
Remo.D
1
Нет, «00000 ... d» просто в качестве примера. Попробуйте сделать это на своей малине, и вы получите свою.
Remo.D
1
Это аппаратный код, уникальный для любого Raspberry (у меня их два), он не основан на файлах. Я был бы удивлен, если бы у вас было это из виртуальной коробки.
Remo.D
6

Вы можете использовать MAC-адрес адаптера Ethernet; используйте выражение примерно так, чтобы извлечь его в переменную:

mysn=`ifconfig eth0 | grep HWaddr |sed -e's/.*HWaddr\s\(\S*\).*/\1/'`
TomG
источник
Хорошее предложение. Если бы я только мог видеть, как я должен получить это от МОНО. Но идея отличная. Совершенно забыл подумать о бортовой локальной сети. MAC-номера действительно достаточно. Просто нужно выяснить, как получить эту информацию из библиотеки System.Net.
BerggreenDK
Нашел это: stackoverflow.com/questions/850650/…
BerggreenDK
1
Обратите внимание, что вы можете изменить MAC-адрес малины. Это жизнеспособное решение, только если вам не нужно быть абсолютно уверенным в личности вашего Raspberry Pi. Серийный код процессора, полученный с помощью cpuinfo, не подлежит изменению.
Remo.D
хорошо, это тоже замечательный момент. Да, MAC можно изменить на некоторых устройствах локальной сети. Это правда. Но я очень обеспокоен тем, что кто-то может клонировать мою SDCARD, а затем использовать ее для нескольких клиентов без моего ведома. Это было бы плохо для моей архитектуры решения.
BerggreenDK
Извините, @TomG. Я действительно оценил вашу идею и собираюсь использовать ее как «запасной вариант» для обнаружения устройств, не использующих Raspberry PI, поскольку мои клиентские программы будут кроссплатформенными. Я хотел бы отметить два ответа в этом случае.
BerggreenDK