web-dev-qa-db-fra.com

Comment lire en N caractères aléatoires depuis / dev / urandom?

read /dev/urandom 3

Ce qui précède ne fonctionne pas .. Comment puis-je lire des octets aléatoires de /dev/urandom en bash?

54
linux
random="$(dd if=/dev/urandom bs=3 count=1)"
46
Flimzy
head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1

(Si vous voulez des tirets littéraux, le tiret doit aller à la fin de la chaîne comme ci-dessus, par opposition à *-_).

Et pour expliquer ce qui se fait grâce à l'ensemble de commandes ci-dessus:

  1. head -c 500 /dev/urandom: Obtenez les 500 premiers caractères (octets) de /dev/urandom.
  2. tr -dc 'a-zA-Z0-9~!@#$%^&*_-': Supprimer tous sauf les caractères spécifiés dans 'a-zA-Z0-9~!@#$%^&*_-' à partir de la sortie de la première commande.
  3. fold -w 3: Formate la sortie de la deuxième commande de telle sorte qu'elle comporte 3 caractères par ligne.
  4. head -n 1: Affiche la première ligne du résultat de la troisième commande sur stdout.
48
ADM

Vérifiez s'il vous plaît man od.

Vous pouvez utiliser, par exemple

od -vAn -N4 -tu4 < /dev/urandom

pour générer des nombres aléatoires décimaux non signés de 4 octets.

35
Ekrem Aksoy

En voici une qui crée des chaînes en base64, notez que même si elles sont limitées aux chaînes en base64, le rembourrage en est supprimé, vous ne pouvez donc pas les décoder, vous n'en aurez probablement pas besoin de toute façon.

 cat /dev/urandom | base64 | head -c 5

Remplacer 5 avec le nombre de caractères que vous souhaitez.

Si vous devez cependant les décoder pour une raison quelconque, déplacez base64 jusqu'au bout du tuyau. Il collectera ensuite 5 caractères d'urandom et base64 l'encodera avec le bon remplissage, mais la chaîne finale peut être plus longue que ce que vous vouliez en raison du remplissage.

cat /dev/urandom | head -c 5 | base64
22
Umur Kontacı

Essaye ça: dd if=/dev/urandom bs=1 count=3

Si vous voulez mettre le résultat dans $ variable:

variable=`dd if=/dev/urandom bs=1 count=3`

Notez qu'il ne sera probablement pas imprimable.

11
Eduardo Ivanec

La solution la plus simple serait aussi simple que:

$ head -cN /dev/urandom
10
Spack