czy numer seryjny jest wydrukowany na urządzeniu, czy jest dostępny tylko za pośrednictwem oprogramowania? Widzę, że na urządzeniu jest naklejka, ale nie sądzę, aby była związana z numerem seryjnym. Byłoby miło poznać identyfikator urządzenia bez konieczności włączania go i podłączania.
Scoop,
3
@AlexisK Jest dostępny tylko w oprogramowaniu.
Alex Chamberlain,
2
Prawidłowo, wydaje się, że nie ma żadnego związku z naklejką i numerem seryjnym. Przeczytałem naklejkę z liczbą Pi i próbowałem ją rozszyfrować. Chociaż Raspberry prawdopodobnie ma wewnętrzne listy łączące oba, nie wydaje się, że istnieje sposób na obliczenie z niego numeru seryjnego lub MAC.
EDP
Odpowiedzi:
78
Numer seryjny można znaleźć w /proc/cpuinfo; na przykład,
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
Grzmotnąć
Możesz użyć bardzo podstawowego orurowania bash
cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2
Ponieważ tabulatory są używane po lewej stronie dwukropka, wycięcie znaku spacji niezawodnie uchwyci tylko numer seryjny.
Poprzednie wersje tej odpowiedzi obejmowały dwukropek, który tworzył wiodącą przestrzeń w zmiennej. Ta wiodąca przestrzeń nie jest usuwana podczas przypisywania zmiennych, jak wcześniej sugerowano.
Bash / Perl
W Bash bardzo łatwo jest wyodrębnić ... przy użyciu Perla. Posługiwać się
Raspberry Spy stanowi bardzo przydatny przykład Pythona.
def getserial():
# Extract serial from cpuinfo file
cpuserial = "0000000000000000"
try:
f = open('/proc/cpuinfo','r')
for line in f:
if line[0:6]=='Serial':
cpuserial = line[10:26]
f.close()
except:
cpuserial = "ERROR000000000"
return cpuserial
Dla każdego zainteresowanego jest sposób na uzyskanie numeru seryjnego Raspberry za pomocą NodeJS:
function getserial(){
var fs = require('fs');
var content = fs.readFileSync('/proc/cpuinfo', 'utf8');
var cont_array = content.split("\n");
var serial_line = cont_array[cont_array.length-2];
var serial = serial_line.split(":");
return serial[1].slice(1);
}
Z jakiegokolwiek powodu content_array.length-2 nie zawsze działa dla mnie. Czasami daje mi „Raspberry Pi 4 Model B Rev 1.1”, który jest linią „Model” tuż za linią „Serial”. Więc dla pewności zmieniłem twoją funkcję na (patrz następny komentarz).
fivedogit
funkcja getserial () {var fs = wymagany ('fs'); var content = fs.readFileSync ('/ proc / cpuinfo', 'utf8'); var cont_array = content.split ("\ n"); var x = 0; var serial_line = ""; while (x <cont_array.length) {serial_line = cont_array [x]; if (serial_line.startsWith („Serial”)) {return serial_line.split (":") [1] .slice (1); } x ++; }}
programowanie gry w golfa nie jest zalecane na stronie internetowej, ponieważ bardzo trudno jest podążać za odpowiedzią dla początkujących, szczególnie jeśli nie napiszesz żadnych wyjaśnień ani szczegółowych komentarzy.
lenik
1
Nie chciałbym nazywać tej odpowiedzi „programowaniem golfa” w porównaniu do jeszcze bardziej tajemniczej, takiej jak „Bash / Awk”. Właściwie chciałem podnieść tę odpowiedź ze względu na równość, ale po uruchomieniu jej na moim PI i porównaniu z inną wersją, nie zrobię tego, ponieważ muszę przyznać, że ta odpowiedź nie daje dokładnego wyniku poprzez wstawienie dodatkowej wiodącej przestrzeni. PS: Ja też tego nie pomniejszę
Van Jone
4
Używanie awk:
cat /proc/cpuinfo | grep Serial | awk ' {print $3}'
To dobry przykład UUOC . Można to po prostu napisaćawk '/Serial/{print $3}' /proc/cpuinfo
ripat
1
Tak. Rzeczywiście jest to sposób na zdobycie go.
To zabawne, że mój Pi0 ma te same dane (szeregowe) jak w powyższym przykładzie. Nie ma rozróżnienia między moim numerem seryjnym PI0 a tym opublikowanym przez Alexa Chamberlaina
Za PI3 masz 4 procesory
#cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 1
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 2
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 3
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Hardware : BCM2709
Revision : a02082
Serial : 000000003d1d1c36
Najkrótsza i najprostsza nie została jeszcze podana jako odpowiedź. To w sed:
sed -n '/^Serial/{s/.* //;p}' /proc/cpuinfo
znaczenie:
sed -n - uruchom edytor strumieniowy bez drukowania każdej linii
/^Serial/- dopasuj tylko wiersze rozpoczynające się od słowa „Seryjny”
s/.* //;- zamień wszystko do ostatniego miejsca na nic (wyrażenia regularne są zachłanne , przy okazji)
p - wydrukuj wynik.
sed czasami otrzymuje złą nazwę, ponieważ jest trudny w użyciu i tajemniczy, ale jest dostępny i działa w ten sam sposób (pod warunkiem przestrzegania konwencji POSIX) na wielu typach systemów Linux i Unix.
Odpowiedzi:
Numer seryjny można znaleźć w
/proc/cpuinfo
; na przykład,Grzmotnąć
Możesz użyć bardzo podstawowego orurowania bash
Ponieważ tabulatory są używane po lewej stronie dwukropka, wycięcie znaku spacji niezawodnie uchwyci tylko numer seryjny.
Bash / Perl
W Bash bardzo łatwo jest wyodrębnić ... przy użyciu Perla. Posługiwać się
Na przykład,
Pyton
Raspberry Spy stanowi bardzo przydatny przykład Pythona.
Bibliografia
źródło
cat
.Bash / Grep
Używanie
grep
:Grzmotnąć
Używanie czystego Basha bez użycia zewnętrznych narzędzi:
Wynik jednego z powyższych jest taki sam.
źródło
-P
(Perl regex) jest opcją nowoczesnych wersji GNUgrep
.Bash / Awk
Ponieważ okazało się to pewnego rodzaju „ile sposobów można uzyskać serial” tutaj jest wersja awk
źródło
NodeJS
Dla każdego zainteresowanego jest sposób na uzyskanie numeru seryjnego Raspberry za pomocą NodeJS:
źródło
źródło
Używanie
awk
:źródło
awk '/Serial/{print $3}' /proc/cpuinfo
Tak. Rzeczywiście jest to sposób na zdobycie go.
To zabawne, że mój Pi0 ma te same dane (szeregowe) jak w powyższym przykładzie. Nie ma rozróżnienia między moim numerem seryjnym PI0 a tym opublikowanym przez Alexa Chamberlaina
Za PI3 masz 4 procesory
źródło
Najkrótsza i najprostsza nie została jeszcze podana jako odpowiedź. To w sed:
znaczenie:
sed -n
- uruchom edytor strumieniowy bez drukowania każdej linii/^Serial/
- dopasuj tylko wiersze rozpoczynające się od słowa „Seryjny”s/.* //;
- zamień wszystko do ostatniego miejsca na nic (wyrażenia regularne są zachłanne , przy okazji)p
- wydrukuj wynik.sed czasami otrzymuje złą nazwę, ponieważ jest trudny w użyciu i tajemniczy, ale jest dostępny i działa w ten sam sposób (pod warunkiem przestrzegania konwencji POSIX) na wielu typach systemów Linux i Unix.
źródło
sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo