gera senha que tem tamanho aleatório entre 8 - 16 (eu tenho o gerador mas não é dinâmico) [duplicado]

1

Este é o meu gerador de senhas e gera 8 caracteres e embaralha-os. Mas eu preciso fazer isso de forma dinâmica. Como eu iria fazer isso? Assim, a saída teria um tamanho diferente 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
    
por user3395201 07.10.2014 / 20:12

1 resposta

1

Definir

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

e, em seguida, gerar $len caracteres, usando uma estrutura como a que ofereci na minha resposta para o seu relacionamento muito próximo para gerar apenas um caractere especial nesta pergunta do gerador de senhas,

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 caracteres individuais então você recebe uma distribuição de grupo de personagens ao seu gosto. Isso está além do escopo de sua pergunta e entraria em escrever suas necessidades (ou seja, escrevendo sua pergunta ) para você.

    
por 07.10.2014 / 20:24

Tags