o número de série está impresso no dispositivo ou está disponível apenas através do software? Vejo que há um adesivo no dispositivo, mas não acho que esteja relacionado ao número de série. Seria bom saber o ID do dispositivo sem precisar ligá-lo e conectá-lo.
Colher
3
@AlexisK Está disponível apenas em software.
Alex Chamberlain
2
Correto, não parece haver nenhuma relação com o adesivo e o número de série. Eu li o adesivo de vários Pi's e tentei decodificá-lo. Embora o Raspberry provavelmente tenha listas internas conectando os dois, não parece haver nenhuma maneira de calcular o serial ou MAC a partir dele.
EDP
Respostas:
79
O número de série pode ser encontrado em /proc/cpuinfo; por exemplo,
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
Bater
Você pode usar tubulação bash muito básica
cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2
Como as guias são usadas no lado esquerdo dos dois pontos, o corte do caractere de espaço capturará apenas o número de série.
As versões anteriores dessa resposta eram cortadas no cólon, o que produzia um espaço à esquerda na variável. Esse espaço inicial não é removido durante a atribuição de variáveis, conforme sugerido anteriormente.
Bash / Perl
No Bash, é muito simples extrair ... usando Perl. Usar
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
O Perl aceita nomes de arquivos como argumentos. Não é necessário usar cat.
Dennis Williamson
3
os últimos 6 dígitos do meu número de série são iguais aos últimos 6 dígitos do meu endereço MAC. Isso é verdade para você?
Colher
6
<redirecionamento também funciona, por isso é um uso inútil de gato.
XTL
3
Existe alguma maneira de obter essas informações fisicamente? Quero dizer, no quadro, então não preciso inicializar todos os pi para obter essas informações.
Zeezer #
3
É único? parece um pouco curto ... na minha série apenas 4 bytes usado, tudo resto são zeros
Para qualquer pessoa interessada aqui, é uma maneira de obter o número de série da framboesa usando o 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 qualquer motivo, content_array.length-2 nem sempre funciona para mim. Às vezes, aparece o "Raspberry Pi 4 Modelo B Rev 1.1", que é a linha "Model" logo após a linha "Serial". Então mudei sua função para isso (veja o próximo comentário) para ter certeza.
fivedogit
função 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 ++; }}
A programação de golfe não é incentivada no site, porque é muito difícil seguir sua resposta para iniciantes, especialmente se você não escrever nenhuma explicação ou comentário detalhado.
lenik
11
Eu me oporia a chamar essa resposta de "programação de golfe" em comparação com uma resposta ainda mais enigmática, como "Bash / Awk". Na verdade, eu pretendia elevar esta resposta por uma questão de igualdade, mas depois de executá-la no meu PI e comparar com outra versão, não o faço porque devo admitir que esta resposta não está fornecendo resultados precisos ao inserir espaço extra à esquerda. PS: Eu não vou menos isso também, embora
Van Jone
5
Usando awk:
cat /proc/cpuinfo | grep Serial | awk ' {print $3}'
Esse é um bom exemplo de UUOC . Poderia ser simplesmente escrito #awk '/Serial/{print $3}' /proc/cpuinfo
4186 ripat
2
O mais curto e mais simples ainda não foi fornecido como resposta. Isto, em sed:
sed -n '/^Serial/{s/.* //;p}' /proc/cpuinfo
significado:
sed -n - execute o editor de fluxo sem imprimir todas as linhas
/^Serial/- corresponda apenas às linhas que começam com a palavra "Serial"
s/.* //;- substitua tudo até o último espaço por nada (as expressões regulares são gananciosas , aliás)
p - imprima o resultado.
Às vezes, o sed recebe um nome ruim por ser difícil de usar e enigmático, mas está disponível e funciona da mesma maneira (desde que você se atenha às convenções do POSIX) em muitos tipos de Linux e Unix.
Respostas:
O número de série pode ser encontrado em
/proc/cpuinfo
; por exemplo,Bater
Você pode usar tubulação bash muito básica
Como as guias são usadas no lado esquerdo dos dois pontos, o corte do caractere de espaço capturará apenas o número de série.
Bash / Perl
No Bash, é muito simples extrair ... usando Perl. Usar
Por exemplo,
Pitão
O Raspberry Spy fornece um exemplo muito útil de Python.
Referências
fonte
cat
.Bash / Grep
Usando
grep
:Bater
Usando o Bash puro sem usar utilitários externos:
A saída de qualquer um dos itens acima é a mesma.
fonte
-P
(Perl regex) é uma opção de versões modernas do GNUgrep
.Bash / Awk
Como isso acabou sendo um tipo de "quantas maneiras você pode obter o serial", aqui está a versão do awk
fonte
NodeJS
Para qualquer pessoa interessada aqui, é uma maneira de obter o número de série da framboesa usando o NodeJS:
fonte
fonte
Usando
awk
:fonte
awk '/Serial/{print $3}' /proc/cpuinfo
O mais curto e mais simples ainda não foi fornecido como resposta. Isto, em sed:
significado:
sed -n
- execute o editor de fluxo sem imprimir todas as linhas/^Serial/
- corresponda apenas às linhas que começam com a palavra "Serial"s/.* //;
- substitua tudo até o último espaço por nada (as expressões regulares são gananciosas , aliás)p
- imprima o resultado.Às vezes, o sed recebe um nome ruim por ser difícil de usar e enigmático, mas está disponível e funciona da mesma maneira (desde que você se atenha às convenções do POSIX) em muitos tipos de Linux e Unix.
fonte
sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
Sim. Na verdade, este é o caminho para obtê-lo.
É engraçado que meu Pi0 tenha os mesmos dados (serial) do exemplo acima. Não há diferenciador entre minha série PI0 e a publicada por Alex Chamberlain
Para PI3 você tem 4 procesores
fonte