Le numéro de série est-il imprimé sur le périphérique ou est-il uniquement disponible via le logiciel? Je vois qu'il y a un autocollant sur le périphérique mais je ne pense pas qu'il soit lié au numéro de série. Ce serait bien de connaître l'identifiant de l'appareil sans avoir à l'allumer et à le connecter.
Scoop
3
@AlexisK Il n'est disponible que sous forme de logiciel.
Alex Chamberlain
2
Correct, il ne semble pas y avoir de relation entre l’autocollant et le numéro de série. J'ai lu l'autocollant d'un certain nombre de Pi et j'ai essayé de le décoder. Bien que Raspberry ait probablement des listes internes reliant les deux, il ne semble pas qu'il soit possible de calculer le numéro de série ou le MAC à partir de celui-ci.
EDP
Réponses:
79
Le numéro de série peut être trouvé dans /proc/cpuinfo; par exemple,
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
Frapper
Vous pouvez utiliser une tuyauterie bash très basique
cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2
Étant donné que les onglets sont utilisés sur le côté gauche des deux points, le fait de couper le caractère d'espacement ne capturera de manière fiable que le numéro de série.
Les versions précédentes de cette réponse ont coupé sur le côlon, ce qui a généré un espace de début dans la variable. Cet espace initial n'est pas supprimé lors de l'affectation de variable, comme suggéré précédemment.
Bash / Perl
En Bash, il est très simple d'extraire ... en utilisant Perl. Utilisation
Raspberry Spy fournit un exemple très utile 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 acceptera les noms de fichiers comme arguments. Il n'est pas nécessaire d'utiliser cat.
Dennis Williamson
3
Les 6 derniers chiffres de mon numéro de série sont les mêmes que les 6 derniers chiffres de mon adresse MAC. Est-ce vrai pour toi?
Scoop
6
<la redirection fonctionne aussi, c’est donc une utilisation inutile de chat.
XTL
3
Y a-t-il un moyen d'obtenir cette information physiquement? Je veux dire sur le tableau, donc je n'ai pas à démarrer chaque pi pour obtenir cette information.
Zeezer
3
Est-ce unique? semble un peu court ... dans mon feuilleton seulement 4 octets utilisés, tous les autres sont des zéros
Pour ceux qui sont intéressés, voici un moyen d'obtenir le numéro de série Raspberry à l'aide de 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);
}
Pour une raison quelconque, content_array.length-2 ne fonctionne pas toujours pour moi. Parfois, cela me donne "Raspberry Pi 4 Model B Rev 1.1" qui est la ligne "Model" juste après la ligne "Serial". J'ai donc changé votre fonction en ceci (voir commentaire suivant) pour en être sûr.
Fivedogit
function 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) {série_ligne = cont_array [x]; if (serial_line.startsWith ("Serial")) {return serial_line.split (":") [1] .slice (1); } x ++; }}
La programmation du golf n'est pas recommandée sur le site Web, car il est très difficile de suivre votre réponse pour les débutants, surtout si vous n'écrivez pas d'explication ou de commentaire détaillé.
lenik
1
Je m'opposerais à ce que l'on appelle cette réponse "programmation du golf" une comparaison encore plus cryptique, comme "Bash / Awk". En fait, je voulais élever cette réponse pour des raisons d'égalité, mais après l'avoir exécutée sur mon IP et comparée à une autre version, je ne le ferai pas parce que je dois admettre que cette réponse ne donne pas un résultat précis en insérant un espace supplémentaire supplémentaire. PS: Je ne veux pas trop moins cependant
Van Jone
5
Utilisant awk:
cat /proc/cpuinfo | grep Serial | awk ' {print $3}'
C'est un bel exemple de UUOC . Pourrait être simplement écritawk '/Serial/{print $3}' /proc/cpuinfo
Ripat
2
Le plus court et le plus simple n'a pas encore été fourni comme réponse. Ceci, en sed:
sed -n '/^Serial/{s/.* //;p}' /proc/cpuinfo
sens:
sed -n - lance l'éditeur de flux sans imprimer chaque ligne
/^Serial/- correspond uniquement aux lignes qui commencent par le mot "Série"
s/.* //;- remplacez tout par le dernier espace sans rien (les expressions rationnelles sont gourmandes , d'ailleurs)
p - imprimer le résultat.
sed a parfois mauvaise réputation pour être difficile à utiliser et cryptique, mais il est disponible et fonctionne de la même manière (tant que vous vous en tenez aux conventions POSIX) sur de nombreux types de Linux et Unix.
Mon one-liner pour même supprimer les zéros de gauche:sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
thomas
1
Oui. En effet c'est le moyen de l'obtenir.
C'est drôle que mon Pi0 ait les mêmes données (série) que l'exemple ci-dessus. Il n'y a pas de différenciateur entre mon numéro de série PI0 et celui posté par Alex Chamberlain
Pour PI3, vous avez 4 processeurs
#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
Réponses:
Le numéro de série peut être trouvé dans
/proc/cpuinfo
; par exemple,Frapper
Vous pouvez utiliser une tuyauterie bash très basique
Étant donné que les onglets sont utilisés sur le côté gauche des deux points, le fait de couper le caractère d'espacement ne capturera de manière fiable que le numéro de série.
Bash / Perl
En Bash, il est très simple d'extraire ... en utilisant Perl. Utilisation
Par exemple,
Python
Raspberry Spy fournit un exemple très utile de Python.
Références
la source
cat
.Bash / Grep
Utilisant
grep
:Frapper
Utiliser Bash pur sans utiliser d’utilitaire externe:
La sortie de l'un des éléments ci-dessus est la même.
la source
-P
(expression régulière Perl) est une option des versions modernes de GNUgrep
.Bash / Awk
Depuis que cela s'est avéré être une sorte de "combien de façons pouvez-vous obtenir la série", voici la version awk
la source
NodeJS
Pour ceux qui sont intéressés, voici un moyen d'obtenir le numéro de série Raspberry à l'aide de NodeJS:
la source
la source
Utilisant
awk
:la source
awk '/Serial/{print $3}' /proc/cpuinfo
Le plus court et le plus simple n'a pas encore été fourni comme réponse. Ceci, en sed:
sens:
sed -n
- lance l'éditeur de flux sans imprimer chaque ligne/^Serial/
- correspond uniquement aux lignes qui commencent par le mot "Série"s/.* //;
- remplacez tout par le dernier espace sans rien (les expressions rationnelles sont gourmandes , d'ailleurs)p
- imprimer le résultat.sed a parfois mauvaise réputation pour être difficile à utiliser et cryptique, mais il est disponible et fonctionne de la même manière (tant que vous vous en tenez aux conventions POSIX) sur de nombreux types de Linux et Unix.
la source
sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
Oui. En effet c'est le moyen de l'obtenir.
C'est drôle que mon Pi0 ait les mêmes données (série) que l'exemple ci-dessus. Il n'y a pas de différenciateur entre mon numéro de série PI0 et celui posté par Alex Chamberlain
Pour PI3, vous avez 4 processeurs
la source