¿Está impreso el número de serie en el dispositivo o solo está disponible a través del software? Veo que hay una pegatina en el dispositivo, pero no creo que esté relacionado con el número de serie. Sería bueno saber la ID del dispositivo sin tener que encenderlo y conectarlo.
Scoop
3
@AlexisK Solo está disponible en software.
Alex Chamberlain
2
Correcto, no parece haber ninguna relación con la etiqueta y el número de serie. He leído la pegatina de varios Pi y he intentado decodificarla. Si bien Raspberry probablemente tiene listas internas que conectan ambos, no parece que haya alguna forma de calcular el número de serie o MAC a partir de él.
EDP
Respuestas:
79
El número de serie se puede encontrar en /proc/cpuinfo; por ejemplo,
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
Golpetazo
Puedes usar tuberías bash muy básicas
cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2
Dado que las pestañas se usan en el lado izquierdo del colon, cortar el carácter de espacio capturará de manera confiable solo el número de serie.
Las versiones anteriores de esta respuesta cortaban los dos puntos, lo que producía un espacio principal en la variable. Ese espacio inicial no se elimina durante la asignación de variables como se sugirió anteriormente.
Bash / Perl
En Bash, es muy simple extraer ... usando Perl. Utilizar
Raspberry Spy proporciona un ejemplo muy útil de Python.
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 aceptará nombres de archivo como argumentos. No es necesario usar cat.
Dennis Williamson
3
Los últimos 6 dígitos de mi número de serie son los mismos que los últimos 6 dígitos de mi dirección MAC. ¿Es esto cierto para ti?
Scoop
66
<la redirección también funciona, por lo que es un uso inútil de cat.
XTL
3
¿Hay alguna forma de obtener esta información físicamente? Quiero decir en el tablero, así que no tengo que arrancar cada pi para obtener esta información.
Zeezer
3
¿Es único? parece un poco corto ... en mi serie solo se usan 4 bytes, todos los demás son ceros
Para cualquier persona interesada, aquí hay una manera de obtener el número de serie de frambuesa usando 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);
}
Por alguna razón, content_array.length-2 no siempre funciona para mí. A veces me da "Raspberry Pi 4 Modelo B Rev 1.1", que es la línea "Modelo" justo después de la línea "Serie". Así que cambié su función a esto (ver el siguiente comentario) para asegurarme.
fivedogit
función getserial () {var fs = require ('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 ++; }}
No se recomienda programar golf en el sitio web, porque es muy difícil seguir su respuesta para principiantes, especialmente si no escribe ninguna explicación o comentario detallado.
lenik
1
Me opondría a llamar a esta respuesta "programación de golf" en comparación con una aún más críptica como "Bash / Awk". En realidad, tenía la intención de elevar esta respuesta en aras de la igualdad, pero después de ejecutarla en mi PI y compararla con otra versión, no lo haré porque debo admitir que esta respuesta no está dando un resultado preciso insertando espacio inicial adicional. PD: Sin embargo, no lo voy a menos
Van Jone
5
Utilizando awk:
cat /proc/cpuinfo | grep Serial | awk ' {print $3}'
Ese es un buen ejemplo de UUOC . Podría escribirse simplementeawk '/Serial/{print $3}' /proc/cpuinfo
ripat
2
Lo más corto y lo más simple aún no se ha proporcionado como respuesta. Esto, en sed:
sed -n '/^Serial/{s/.* //;p}' /proc/cpuinfo
sentido:
sed -n - ejecuta el editor de flujo sin imprimir cada línea
/^Serial/- coincide solo con las líneas que comienzan con la palabra "Serie"
s/.* //;- Reemplace todo hasta el último espacio con nada (las expresiones regulares sed son codiciosas , por cierto)
p - imprime el resultado.
A veces, sed recibe un mal nombre por ser difícil de usar y críptico, pero está disponible y funciona de la misma manera (siempre y cuando se adhiera a las convenciones POSIX) en muchos tipos de Linux y Unix.
Mi sola línea para eliminar incluso los ceros iniciales:sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
Thomas
1
Si. De hecho, esta es la forma de conseguirlo.
Es curioso que mi Pi0 tenga los mismos datos (en serie) que en el ejemplo anterior. No hay diferenciador entre mi serie PI0 y la publicada por Alex Chamberlain
Para PI3 tienes 4 procesadores
#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
Respuestas:
El número de serie se puede encontrar en
/proc/cpuinfo
; por ejemplo,Golpetazo
Puedes usar tuberías bash muy básicas
Dado que las pestañas se usan en el lado izquierdo del colon, cortar el carácter de espacio capturará de manera confiable solo el número de serie.
Bash / Perl
En Bash, es muy simple extraer ... usando Perl. Utilizar
Por ejemplo,
Pitón
Raspberry Spy proporciona un ejemplo muy útil de Python.
Referencias
fuente
cat
.Bash / Grep
Utilizando
grep
:Golpetazo
Usando puro Bash sin usar ninguna utilidad externa:
La salida de cualquiera de los anteriores es la misma.
fuente
-P
(Perl regex) es una opción de versiones modernas de GNUgrep
.Bash / Awk
Dado que esto resultó ser una especie de "¿de cuántas maneras puede obtener la serie" aquí está la versión awk
fuente
NodeJS
Para cualquier persona interesada, aquí hay una manera de obtener el número de serie de frambuesa usando NodeJS:
fuente
fuente
Utilizando
awk
:fuente
awk '/Serial/{print $3}' /proc/cpuinfo
Lo más corto y lo más simple aún no se ha proporcionado como respuesta. Esto, en sed:
sentido:
sed -n
- ejecuta el editor de flujo sin imprimir cada línea/^Serial/
- coincide solo con las líneas que comienzan con la palabra "Serie"s/.* //;
- Reemplace todo hasta el último espacio con nada (las expresiones regulares sed son codiciosas , por cierto)p
- imprime el resultado.A veces, sed recibe un mal nombre por ser difícil de usar y críptico, pero está disponible y funciona de la misma manera (siempre y cuando se adhiera a las convenciones POSIX) en muchos tipos de Linux y Unix.
fuente
sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
Si. De hecho, esta es la forma de conseguirlo.
Es curioso que mi Pi0 tenga los mismos datos (en serie) que en el ejemplo anterior. No hay diferenciador entre mi serie PI0 y la publicada por Alex Chamberlain
Para PI3 tienes 4 procesadores
fuente