Generando datos aleatorios

Para las clases de bases de datos o de scripts en Linux, a veces, es necesario tener un fichero con miles de datos aleatorios, pero en un determinado formato. Introducir datos a mano es una de las tareas más ingratas de la informática. Y más si se tratan de datos de usar y tirar. En este post, simplemente voy a comentar las herramientas que más uso. Hay multitud de ellas y para otros propósitos.

Para generar datos en formato tabla relacional se puede usar generatedata.com. Este permite exportar el resultado en SQL, CSV, XML o Excel y es interesante porque permite generar datos de muchos tipos predefinidos, a partir de un diccionario propio de nombre o ciudades o de formatos para teléfonos, auto-incrementales y otros datos típicos. Además, cuenta con un lenguaje para expresiones regulares por si no nos sirve nada de lo que está predefinido. En mi caso me lo instalé en una máquina virtual para poder modificar su base de datos y poner nombres y ciudades españoles.

Pero si queremos usar sólo la terminal hay que hacer uso o bien de la variable de entorno $RANDOM que contiene un número aleatorio o de los ficheros /dev/urandom y /dev/random. El primero resulta menos seguro para la generación de claves, por ejemplo, porque puede ser menos aleatorio. La razón es que /dev/random devuelve datos aleatorios generados de sus almacenes de entropía, pero pueden ser limitados. urandom, por su parte, devuelve todos los que se le pidan generándolos a partir de almacenes de entropía y de operaciones matemáticas.

Este comando, por ejemplo:

$ cat /dev/urandom | tr -d -c "123456789ABCDEF" | head -c 12 | sed  -r -e 's/(..)/\1:/g' -e 's/:$/\n/g'

Genera direcciones MAC aleatorias.

Con el resultado de cat /etc/urandom podemos hacer prácticamente todo tipo de datos aleatorios si son con formato fijo, estadísticos o palabras sin sentido. Para usar palabras que existan se puede hacer uso en un script del diccionario del sistema. En Ubuntu 12.04 está en /usr/share/dict/spanish.

Si sólo queremos generar una contraseña segura podemos usar el comando pwgen:

$ pwgen -s -y 10

Genera contraseñas seguras de 10 caracteres. Tal vez sean difíciles de leer. Por eso se puede usar sin el -s y las hace más fáciles de memorizar.

Otra manera de conseguir datos es gracias al movimiento Opendata. Se pueden encontrar muchos datos reales muy variados y curiosos en páginas web gubernamentales de todo el mundo.