Este es un pequeño script en Bash para generar un número deseado de contraseñas de una longitud deseada
En este mismo blog, hace un tiempo pudiste leer cómo generar contraseñas y comprobarlas mediante unas utilidades para la línea de comandos:
En este caso, se trata de un sencillo script en Bash para generar un número de contraseñas que queramos y de una longitud de caracteres que deseemos. Veamos cómo hacerlo…
Este artículo es una adaptación de un artículo en inglés escrito por Greg Pittman y publicado en la web opensource.com bajo licencia CC-by-sa
Lo primero es conseguir el código del script, que como veréis es muy sencillo. Está disponible en un snippet en GitLab, pero es el código que encontraréis a continuación:
#!/usr/bin/env sh long=0 cant=0 printf "\e[2J\e[H" printf "\n* Generador de contraseñas * \n" read -p "De qué longitud de caracteres quieres las contraseñas: " long read -p "Cuantas contraseñas quieres generar: " cant printf "\nGenerando %s contraseñas de %s caracteres \n" "$cant" "$long" for ((n=0;n<$cant;n++)) do dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - | sed -ne 2p | cut -c-$long done
Puedes copiar el código, pegarlo en un archivo con extensión .sh y darle permisos de ejecución (chmod +x archivo.sh)
El funcionamiento es sencillo. Preguntamos la cantidad de caracteres por contraseña y el número de contraseñas a generar.
Después se generan bloques de datos aleatorios, y se pasan a caracteres que se puedan imprimir y que no sean caracteres de control. Se mezclan mayúsculas y minúsculas y se cortan a la medida de caracteres deseados.
Y se imprime la lista. Después escogemos la que mejor nos plazca y la pegamos en el servicio que deseemos. Después se pueden gestionar mediante pass y tenerlas sincronizadas mediante git
Me pareció interesante darle más flexibilidad al script, haciendo que este pregunte información al usuario. ¿Qué te ha parecido?
la linea 12 me da error: Syntax error: Bad for loop variable
¿?
Pues no sé… a mi me funciona…
Copia el código desde GitLab…
Saludos.
Yo usaba un script parecido hasta que me cansé hace unos años y escribí uno basado en el método diceware, para que sean más fáciles de recordar. Aunque ya no sea necesario con los gestores de contraseñas, sigo usándolo porque genera claves muy robustas.
https://github.com/edkalrio/Quantum-Diceware-Passphrase-Generator
Gracias!
Echaré un vistazo…
Saludos.
El for se puede reemplazar por esto:
cat /dev/urandom | tr -dc ‘A-Za-z’ | fold -w $long| head -n $cant;
Hace lo mismo y no necesita programas adicionales (en mi distribución uuencode no parece estar disponible), además de que con tr es posible indicar conjuntos o rangos de caracteres personalizados en caso de que te interese mejorar el script.
Muchas gracias por el aporte!
Saludos y gracias por comentar!