Script en Bash que genera contraseñas aleatorias

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?

6 comentarios sobre “Script en Bash que genera contraseñas aleatorias

  1. 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.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.