Tenga en cuenta que estos comandos solo deben usarse cuando realmente necesita datos aleatorios de alta calidad, generalmente para crear buenas contraseñas. De lo contrario, existen más alternativas ligeras, por ejemplo, la 'variable' del entorno de shell RANDOMpara crear números enteros positivos aleatorios: echo $RANDOMy el programa shufpara generar permutaciones aleatorias, por ejemplo, reproducir en orden aleatorio desde una lista de reproducción.
sudodus
Respuestas:
54
Es un archivo como dispositivo, por lo que puede hacer cosas como capturarlo o copiarlo. Por ejemplo:
Nota: No haga cat / dev / urandom> ~ / urandom_test2 en sistemas de bajo rendimiento -> que congela el sistema
Caner Korkmaz el
1
Bueno ... eso realmente depende de tu definición de línea. Mi definición es bytes terminated by a \n. ¿Lo que es tuyo? head -30 /dev/urandomte dará 30 líneas de bytes aleatorios. La longitud de esas líneas será ciertamente aleatoria. Intente ejecutar wc -len su archivo de salida si no está convencido.
aychedee
3
Tenga en cuenta que /dev/urandomse limita a 32 MiB por read()y ddno volverá a intentar una vez más para leer /dev/urandomlos rendimientos de los 32 MiB, por lo que tiene que llamar dda iflag=fullblock. Ver dd está produciendo un archivo aleatorio de 32 MB en lugar de 1 GB
Sergiy Kolodyazhnyy
14
Obtener bytes aleatorios
Si necesita una cierta cantidad de bytes aleatorios, lea esa cantidad de bytes /dev/urandom.
Es un "archivo especial" que está hecho para ser como un archivo para leer números aleatorios.
Usar catpara leer /dev/urandomes una mala idea, porque intentará leer /dev/urandomhasta el final, pero no termina.
Puedes usar head. Pero tenga cuidado de leer por byte, no por línea, porque las líneas se separarían aleatoriamente por bytes aleatorios de nueva línea.
Entonces, para leer 30 bytes aleatorios en un archivo random.bytes, use:
head -c 30/dev/urandom > random.bytes
Puedes leerlo como un usuario normal.
Dejar solo / dev / random
Normalmente, quieres usar /dev/urandom, no /dev/random.
El problema es que /dev/randomes difícil de usar de la manera correcta, y fácil de usar de manera incorrecta. Usarlo mal funciona al principio, pero luego crea problemas de rendimiento extraños, incluso aleatorios. A veces.
Cuando lo usa /dev/urandom, lo hace /dev/randominternamente, cuidando las partes difíciles.
RANDOM
para crear números enteros positivos aleatorios:echo $RANDOM
y el programashuf
para generar permutaciones aleatorias, por ejemplo, reproducir en orden aleatorio desde una lista de reproducción.Respuestas:
Es un archivo como dispositivo, por lo que puede hacer cosas como capturarlo o copiarlo. Por ejemplo:
Crea un archivo que contiene 4K de bytes aleatorios.
Continuará escribiendo bytes aleatorios en ese archivo hasta que presione Ctrl-C. No haga esto en un sistema de bajo rendimiento ...
Escribirá 30 líneas de bytes aleatorios
fuente
bytes terminated by a \n
. ¿Lo que es tuyo?head -30 /dev/urandom
te dará 30 líneas de bytes aleatorios. La longitud de esas líneas será ciertamente aleatoria. Intente ejecutarwc -l
en su archivo de salida si no está convencido./dev/urandom
se limita a 32 MiB porread()
ydd
no volverá a intentar una vez más para leer/dev/urandom
los rendimientos de los 32 MiB, por lo que tiene que llamardd
aiflag=fullblock
. Ver dd está produciendo un archivo aleatorio de 32 MB en lugar de 1 GBObtener bytes aleatorios
Si necesita una cierta cantidad de bytes aleatorios, lea esa cantidad de bytes
/dev/urandom
.Es un "archivo especial" que está hecho para ser como un archivo para leer números aleatorios.
Usar
cat
para leer/dev/urandom
es una mala idea, porque intentará leer/dev/urandom
hasta el final, pero no termina.Puedes usar
head
. Pero tenga cuidado de leer por byte, no por línea, porque las líneas se separarían aleatoriamente por bytes aleatorios de nueva línea.Entonces, para leer 30 bytes aleatorios en un archivo
random.bytes
, use:Puedes leerlo como un usuario normal.
Dejar solo / dev / random
Normalmente, quieres usar
/dev/urandom
, no/dev/random
.El problema es que
/dev/random
es difícil de usar de la manera correcta, y fácil de usar de manera incorrecta. Usarlo mal funciona al principio, pero luego crea problemas de rendimiento extraños, incluso aleatorios. A veces.Cuando lo usa
/dev/urandom
, lo hace/dev/random
internamente, cuidando las partes difíciles.fuente
Si solo quieres leerlo con números reconocidos puedes hacerlo
fuente
Yo personalmente uso esto para generar tokens:
fuente