Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: taisedekar en 18 Junio 2018, 21:45 pm



Título: pregunta AWK con /dev/urandom [SOLUCIONADO]
Publicado por: taisedekar en 18 Junio 2018, 21:45 pm
Hola, estoy jugando un poco con el AWK y estaba creando un pequeño script para generar contraseñas o códigos con el /dev/urandoml. Sé que es más fácil con TR, FOLD, HEAD pero quisiera hacerlo solo con AWK.

el comando: cat /dev/urandom | awk 'BEGIN {FIELDWIDTHS="8 16 32"} {gsub(/[^a-zA-Z0-9]*/, "")}  {if (NR <=25) printf("|8:> %-10s| |16:> %-20s| |32:> %-20s|\n",$1, $2, $3);}'

Lo que hace en mostrar 3 columnas con códigos alfanuméricos pero de diferente longitud la 1ª columna de 8 caracteres 2ª columna 16 caracteres y la 3º de 32 caracteres.

El problema que tengo es en algunas líneas que por ejemplo en la primera columna solo muestra 2 caracteres o incluso ninguna

(http://subirimagen.me/uploads/20180618144118.png)


Título: Re: pregunta AWK con /dev/urandom
Publicado por: taisedekar en 26 Junio 2018, 11:52 am
Me auto respondo:

El pequeño problema que había era que cuando a obtener caracteres aleatorios también se cogía los de salto de linea y este lo interpretaba, lo que había es hacer es poner al AWK que caracteres de salto de linea a interpretar en mi caso ninguno

Pondremos las variables FS Y RS a Null, pero el script solo con poner las variables RS a null funciona ya que el FS esta interpretado con longitudes fijos con FIELDWIDTHS
para aclarar FS (fields separator, el caracter que separa los campos/columnas ) RS (row separator el caracter que separa el salto de linea/fila)

Comando: cat /dev/urandom | awk 'BEGIN {FS=""; RS=""; FIELDWIDTHS="8 16 32"} {gsub(/[^a-zA-Z0-9]*/, "")}  {if (NR <=25) printf("|8:> %-10s| |16:> %-20s| |32:> %-20s|\n",$1, $2, $3);}'

(http://subirimagen.me/uploads/20180626043907.png)

Por favor, si os a realizado útil me gustaría saberlo, muchas gracias.


Título: Re: pregunta AWK con /dev/urandom [SOLUCIONADO]
Publicado por: animanegra en 26 Junio 2018, 12:00 pm
Por siacaso no estabas al tanto, para obtener números aleatorios desde el bash tambien tienes la variable $RANDOM que te devuelve aleatorios sin tener que hacer peripecias con la salida de /dev/urandom


Título: Re: pregunta AWK con /dev/urandom [SOLUCIONADO]
Publicado por: taisedekar en 26 Junio 2018, 12:10 pm
ok muchas gracias, aunque hay muchas formas más fácil de hacerlo que con AWK que es mucho más complicado. Pero hacerlo de esta forma se aprende un poco más con el AWK, para mi intentar conseguir realizar esta operación he conseguido aprender un poco más;-) ;-)