75 votes

Comment lire 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 à partir de /dev/urandom dans bash ?

71voto

cclark Points 1381
head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1

(Si vous voulez des caractères tirets littéraux, le caractère tiret doit être placé à la fin de la chaîne comme indiqué ci-dessus, par opposition à *-_ ).

Et d'expliquer ce qui est fait grâce à l'ensemble des commandes ci-dessus :

  1. head -c 500 /dev/urandom : Obtenir les 500 premiers caractères (octets) à partir de /dev/urandom .
  2. tr -dc 'a-zA-Z0-9~!@#$%^&*_-' : Supprimer tout 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 : Formatez la sortie de la deuxième commande de manière à ce qu'elle comporte 3 caractères par ligne.
  4. head -n 1 : Afficher la première ligne du résultat de la troisième commande sur stdout .

65voto

John Wells Points 91
random="$(dd if=/dev/urandom bs=3 count=1)"

44voto

Ekrem Aksoy Points 421

Veuillez vérifier 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.

29voto

Umur Kontacı Points 368

En voici un qui crée des chaînes base64, notez que même s'ils sont limités à des chaînes base64, le remplissage est supprimé de celles-ci, donc vous ne pouvez 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 toutefois vous avez besoin de les décoder pour une raison quelconque, déplacez base64 à l'extrémité du tuyau. Il collectera alors 5 caractères d'urandom et les encodera en base64 avec le bon remplissage, mais la chaîne finale peut être plus longue que ce que vous vouliez à cause du remplissage.

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

15voto

Spack Points 1554

La solution la plus simple serait la suivante :

$ head -cN /dev/urandom

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X