Comment puis-je obtenir le numéro de série?


70

Où puis-je trouver le numéro de série du Raspberry Pi que j'utilise actuellement?


2
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

cat /proc/cpuinfo | perl -n -e '/^Serial\s*:\s([0-9a-f]{16})$/ && print "$1\n"'

Par exemple,

$ cat /proc/cpuinfo | perl -n -e '/^Serial\s*:\s([0-9a-f]{16})$/ && print "$1\n"'
000000000000000d

Python

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

Références

  1. Pages de produit clé de licence
  2. Raspberry Spy: Obtenir votre numéro de série Raspberry Pi avec Python

6
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
Flash Thunder

12

Bash / Grep

Utilisant grep:

grep -Po '^Serial\s*:\s*\K[[:xdigit:]]{16}' /proc/cpuinfo

Frapper

Utiliser Bash pur sans utiliser d’utilitaire externe:

pattern='^Serial.*([[:xdigit:]]{16})$'
while read -r line
do
    if [[ $line =~ $pattern ]]
    then
        echo "${BASH_REMATCH[1]}"
    fi
done < /proc/cpuinfo

La sortie de l'un des éléments ci-dessus est la même.


c'est le seul qui a fonctionné pour moi
cwd

Cela ne fonctionne pas: "P" est une option invalide. Au moins dans pcpAudioCore
theking2

1
@ theking2: J'ai bien peur de ne pas connaître pcpAudioCore. Le -P(expression régulière Perl) est une option des versions modernes de GNU grep.
Dennis Williamson

8

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

  awk '/ ^ Série \ s *: \ s / {print $ 3}' / proc / cpuinfo

7

NodeJS

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 ++; }}
fivedogit

5
grep -i serial /proc/cpuinfo | cut -d : -f2

1
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}'

6
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.


1
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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.