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?
random="$(dd if=/dev/urandom bs=3 count=1)"
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:
head -c 500 /dev/urandom
: Obtenez les 500 premiers caractères (octets) de /dev/urandom
.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.fold -w 3
: Formate la sortie de la deuxième commande de telle sorte qu'elle comporte 3 caractères par ligne.head -n 1
: Affiche la première ligne du résultat de la troisième commande sur stdout
.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.
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
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.
La solution la plus simple serait aussi simple que:
$ head -cN /dev/urandom