J'utilise la commande bash Shell et je voudrais envoyer la sortie de la commande openssl rand -base64 1000
à la commande dd
comme dd if={output of openssl} of="sample.txt bs=1G count=1
. Je pense pouvoir utiliser des variables, mais je ne suis pas sûr de la meilleure façon de le faire. La raison pour laquelle je voudrais créer le fichier est que je voudrais un fichier de 1 Go avec du texte aléatoire.
Réponses
Trop de publicités?if=
n'est pas nécessaire, vous pouvez passer quelque chose dans dd
à la place :
something... | dd of=sample.txt bs=1G count=1
something... | head -c 1G > sample.txt
Ce ne serait pas utile ici puisque openssl rand
nécessite de toute façon de spécifier le nombre d'octets. Vous n'avez donc pas besoin de dd
- ce fonctionnerait :
openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))
1 gigaoctet correspond généralement à 2 30 octets (bien que vous puissiez utiliser 10**9
pour 10 9 octets à la place). Le site * 3/4
tient compte de la surcharge de la base 64, ce qui fait de la encodé sortie 1 GB.
Alternativement, vous pouvez utiliser /dev/urandom
mais il serait un peu plus lent qu'OpenSSL :
dd if=/dev/urandom of=sample.txt bs=1G count=1
J'utiliserais bs=64M count=16
ou similaire, pour que 'dd' n'essaie pas d'utiliser tout le 1 Go de RAM en une seule fois :
dd if=/dev/urandom of=sample.txt bs=64M count=16
ou même le plus simple head
outil - vous n'avez pas vraiment besoin de dd ici :
head -c 1G /dev/urandom > sample.txt
Si vous avez simplement besoin d'un fichier quelque peu aléatoire qui est pas utilisé pour des choses liées à la sécurité comme l'analyse comparative de quelque chose, alors la suite sera beaucoup plus rapide :
truncate --size 1G foo
shred --iterations 1 foo
C'est également plus pratique car vous pouvez simplement spécifier la taille directement.
- Réponses précédentes
- Plus de réponses