gerar senha com comprimento aleatório entre 8 e 16 (eu tenho o gerador, mas não é dinâmico)

gerar senha com comprimento aleatório entre 8 e 16 (eu tenho o gerador, mas não é dinâmico)

Este é o meu gerador de senhas e gera 8 caracteres e os embaralha. Mas eu preciso torná-lo um comprimento dinâmico. Como eu faria isso. Portanto, a saída teria comprimentos diferentes entre 8 e 16 caracteres.

if [ $# -eq 0 ]; then
num=("0" "1" "2" "3" "4" "5" "7" "8" "9")
special=("@" "#" "$" "%" "*" "-" "+")
upper=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
lower=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
lower2=${#lower[*]}   #${lower[$((RANDOM%lower2))]}
upper2=${#upper[*]}   #${upper[$((RANDOM%upper2))]}
num2=${#num[*]}     #${num[$((RANDOM%num2))]}
special2=${#special[*]} #${special[$((RANDOM%special2))]}

echo "${special[$((RANDOM%special2))]}${num[$((RANDOM%num2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}" | fold -w 1 | shuf | tr -d '\n'
echo
fi

Responder1

Definir

len=$((8+RANDOM%9))

e então gerar $lencaracteres, usando uma estrutura como a que ofereci em minha resposta ao seu assunto intimamente relacionadocomo gerar apenas um caractere especial neste gerador de senhapergunta,

word=
for ((i=0; i<len; i++))
do
    thischar=(Generate one character by whatever logic you like)
    word="$word$thischar"
done
echo "$word"

Deixo para você decidir como gerar os personagens individuais para obter uma distribuição de grupos de personagens ao seu gosto. Isso está além do escopo da sua pergunta e seria necessário escrever seus requisitos (ou seja, escreversua pergunta) para você.

informação relacionada