web-dev-qa-db-fra.com

Créer des nombres aléatoires uniques (uuids) dans bash

Je veux créer des nombres uniques aléatoires (UUIDS) comme suit:

node.id=ffffffff-ffff-ffff-ffff-ffffffffffff

D'abord j'ai essayé cela

$ rndnum=` echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM`

$ echo $rndnum
30380-echo 21875-echo 14791-echo 32193-echo 11503

Quelle est la bonne façon de créer ce qui suit (où f est un nombre)?

ffffffff-ffff-ffff-ffff-ffffffffffff
11
yael

Sur Linux, le util-linux/util-linux-ng Package offre une commande pour générer des uuids: uuidgen.

$ uuidgen
5528f550-6559-4d61-9054-efb5a16a4de0

Pour citer le Manuel :

Le programme UUIDGEN crée (et imprime) un nouvel identifiant universellement unique (UUID) à l'aide de la bibliothèque libuuid (3). Le nouvel UUID peut raisonnablement être considéré comme unique parmi tous les UUID créés sur le système local, et parmi les UUID créés sur d'autres systèmes du passé et à l'avenir.

Il existe deux types d'Uuids que Uuidgen peut générer: Uuids à base de temps et uuids à base de temps. Par défaut, Uuidgen générera un UUID basé au hasard si un générateur de nombres aléatoires de haute qualité est présent. Sinon, il choisira un UUID basé sur le temps. Il est possible de forcer la génération d'un de ces deux types UUID en utilisant le -r ou -t options.

Addenda: L'OP avait fourni un lien dans les commentaires à la documentation de PRESTO DB . Après un morceau de recherche, j'ai trouvé cette discussion connexe où il est explicitement mentionné que le node.id La propriété est en effet une UUID.


Ajout des informations fournies par Frostschutz dans un commentaire:

À titre d'alternative à l'approche uuidgen/libuuid, vous pouvez utiliser une interface exposée par le noyau Linux lui-même pour générer des UUIDS:

$ cat /proc/sys/kernel/random/uuid
00db2531-365c-415c-86f7-503a35fafa58

L'UUID est ré-générée sur chaque demande.

30
Haxiel

Sur un PI de framboise, et probablement d'autres, la commande est simplement:

uuid

Il devrait être préinstallé, mais sinon, cela devrait le faire: Sudo apt install uuid

1
Greg oooo