apakah nomor seri tercetak pada perangkat atau hanya tersedia melalui perangkat lunak? Saya melihat ada stiker di perangkat tetapi saya tidak berpikir itu terkait dengan nomor seri. Akan menyenangkan untuk mengetahui ID perangkat tanpa harus menyalakannya dan menghubungkannya.
Sendok
3
@AlexisK Ini hanya tersedia dalam perangkat lunak.
Alex Chamberlain
2
Benar, sepertinya tidak ada hubungan dengan stiker dan nomor seri. Saya sudah membaca stiker sejumlah Pi dan mencoba men-decode-nya. Walaupun Raspberry mungkin memiliki daftar internal yang menghubungkan keduanya, sepertinya tidak ada cara untuk menghitung serial atau MAC dari itu.
EDP
Jawaban:
79
Nomor seri dapat ditemukan di /proc/cpuinfo; sebagai contoh,
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
Pesta
Anda dapat menggunakan bash piping yang sangat dasar
cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2
Karena tab digunakan di sisi kiri titik dua, memotong karakter spasi hanya akan menangkap nomor seri.
Versi sebelumnya dari jawaban ini dipotong di titik dua, yang menghasilkan ruang terdepan dalam variabel. Ruang terdepan itu tidak dihapus selama penugasan variabel seperti yang disarankan sebelumnya.
Bash / Perl
Di Bash, sangat mudah untuk mengekstrak ... dengan menggunakan Perl. Menggunakan
Raspberry Spy memberikan contoh Python yang sangat berguna.
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
Perl akan menerima nama file sebagai argumen. Itu tidak perlu digunakan cat.
Dennis Williamson
3
6 digit terakhir dari nomor seri saya sama dengan 6 digit terakhir dari alamat MAC saya. Apakah ini benar untukmu?
Sendok
6
<Pengalihan juga berfungsi, jadi itu adalah penggunaan kucing yang tidak berguna.
XTL
3
Apakah ada cara untuk mendapatkan informasi ini secara fisik? Maksud saya di papan tulis, jadi saya tidak perlu melakukan booting setiap pi untuk mendapatkan informasi ini.
Zeezer
3
Apakah ini unik? tampaknya sedikit pendek ... di seri saya hanya 4 byte yang digunakan, sisanya adalah nol
Bagi siapa pun yang tertarik di sini adalah cara untuk mendapatkan Nomor Seri Raspberry menggunakan 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);
}
Untuk alasan apa pun, content_array.length-2 tidak selalu bekerja untuk saya. Kadang-kadang itu memberi saya "Raspberry Pi 4 Model B Rev 1.1" yang merupakan "Model" tepat setelah garis "Serial". Jadi saya mengubah fungsi Anda menjadi ini (lihat komentar berikutnya) untuk memastikan.
fivedogit
function getserial () {var fs = butuhkan ('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 ++; }}
pemrograman golf tidak dianjurkan di situs web, karena sangat sulit untuk mengikuti jawaban Anda untuk pemula, terutama jika Anda tidak menulis penjelasan atau komentar terperinci.
lenik
1
Saya menentang untuk menyebut jawaban ini "pemrograman golf" dibandingkan dengan yang lebih samar seperti "Bash / Awk". Sebenarnya, saya bermaksud untuk mengangkat jawaban ini demi kesetaraan, tetapi setelah menjalankannya pada PI saya dan membandingkannya dengan versi lain, tidak akan melakukannya karena harus mengakui, jawaban ini tidak memberikan hasil yang tepat dengan memasukkan ruang memimpin tambahan. PS: Saya tidak akan mengurangi itu juga
Van Jone
5
Menggunakan awk:
cat /proc/cpuinfo | grep Serial | awk ' {print $3}'
Itu contoh yang bagus dari UUOC . Bisa ditulis dengan sederhanaawk '/Serial/{print $3}' /proc/cpuinfo
ripat
2
Yang tersingkat dan paling sederhana belum diberikan sebagai jawaban. Ini, dalam sed:
sed -n '/^Serial/{s/.* //;p}' /proc/cpuinfo
berarti:
sed -n - Jalankan editor aliran tanpa mencetak setiap baris
/^Serial/- hanya mencocokkan garis yang dimulai dengan kata "Serial"
s/.* //;- Mengganti semuanya sampai ruang terakhir dengan apa-apa (regex sed serakah , btw)
p - cetak hasilnya.
kadang-kadang mendapat nama yang buruk karena sulit untuk digunakan dan samar, tetapi tersedia dan bekerja dengan cara yang sama (selama Anda tetap pada konvensi POSIX) pada banyak jenis Linux dan Unix.
Satu-liner saya bahkan menghapus nol terkemuka:sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
thomas
1
Iya. Memang ini cara untuk mendapatkannya.
Sangat lucu bahwa Pi0 saya memiliki data yang sama (serial) seperti contoh di atas. Tidak ada perbedaan antara seri PI0 saya dan yang diposting oleh Alex Chamberlain
Untuk PI3 kamu mendapat 4 procesor
#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
Jawaban:
Nomor seri dapat ditemukan di
/proc/cpuinfo
; sebagai contoh,Pesta
Anda dapat menggunakan bash piping yang sangat dasar
Karena tab digunakan di sisi kiri titik dua, memotong karakter spasi hanya akan menangkap nomor seri.
Bash / Perl
Di Bash, sangat mudah untuk mengekstrak ... dengan menggunakan Perl. Menggunakan
Sebagai contoh,
Python
Raspberry Spy memberikan contoh Python yang sangat berguna.
Referensi
sumber
cat
.Bash / Grep
Menggunakan
grep
:Pesta
Menggunakan Bash murni tanpa menggunakan utilitas eksternal apa pun:
Output dari salah satu di atas adalah sama.
sumber
-P
(Perl regex) adalah pilihan dari versi modern dari GNUgrep
.Bash / Awk
Karena ini ternyata semacam "berapa banyak cara Anda bisa mendapatkan serial" di sini adalah versi awk
sumber
NodeJS
Bagi siapa pun yang tertarik di sini adalah cara untuk mendapatkan Nomor Seri Raspberry menggunakan NodeJS:
sumber
sumber
Menggunakan
awk
:sumber
awk '/Serial/{print $3}' /proc/cpuinfo
Yang tersingkat dan paling sederhana belum diberikan sebagai jawaban. Ini, dalam sed:
berarti:
sed -n
- Jalankan editor aliran tanpa mencetak setiap baris/^Serial/
- hanya mencocokkan garis yang dimulai dengan kata "Serial"s/.* //;
- Mengganti semuanya sampai ruang terakhir dengan apa-apa (regex sed serakah , btw)p
- cetak hasilnya.kadang-kadang mendapat nama yang buruk karena sulit untuk digunakan dan samar, tetapi tersedia dan bekerja dengan cara yang sama (selama Anda tetap pada konvensi POSIX) pada banyak jenis Linux dan Unix.
sumber
sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
Iya. Memang ini cara untuk mendapatkannya.
Sangat lucu bahwa Pi0 saya memiliki data yang sama (serial) seperti contoh di atas. Tidak ada perbedaan antara seri PI0 saya dan yang diposting oleh Alex Chamberlain
Untuk PI3 kamu mendapat 4 procesor
sumber