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.

 

Haciendo Linux interesante

Casi desde el primer momento que probé el comando grep me convencí de que me gustaba trabajar con Linux. Ya no sólo por los argumentos de que si es más seguro, si es libre y esas cosas. Si no porque era interesante y en cierta manera divertido y satisfactorio.

Para demostrar esto, estoy haciendo un recopilatorio de cosas curiosas que se pueden hacer con los comandos. Me ha pasado el introducir un nuevo concepto, decir que es interesante, pero no recordar un ejemplo que lo demuestre. Para evitar esto, intento darle la vuelta y jugar con los comandos. Por ejemplo, demostrar que todo es un fichero haciendo que salga por pantalla los movimientos del ratón o redireccionando un disco duro a la tarjeta de sonido. Sin embargo, como sucede con los ejemplos anteriores, hay pocas cosas que no están inventadas o que no estén demasiado vistas.

Por el momento, tengo varias cosas en el Wiki. El cual se amplía cada día, mucho más que este blog. De entre esas cosas, una especie de glosario de comandos con aplicaciones curiosas y un artículo dedicado a ncat que ampliaré cuando los alumnos hagan una práctica que estoy elaborando.

Manual de sed

Aunque en la portada de la web no ha habido mucho movimiento últimamente, en el Wiki he estado haciendo un manual de sed para poder usarlo en mis clases. Aún no está terminado pero ya se puede aprovechar el manual de sed.

Es una traducción y, creo, una mejora del de esta web: http://www.grymoire.com/Unix/Sed.html con aportaciones mías y otras cosas que he ido encontrando.