сгенерировать пароль случайной длины от 8 до 16 (у меня есть генератор, но он не динамический)

сгенерировать пароль случайной длины от 8 до 16 (у меня есть генератор, но он не динамический)

Это мой генератор паролей, и он генерирует 8 символов и перемешивает их. Но мне нужно сделать его динамической длины. Как мне это сделать? Так что вывод будет иметь разную длину от 8 до 16 символов.

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

решение1

Набор

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

а затем сгенерировать $lenсимволы, используя структуру, подобную той, которую я предложил в своем ответе на ваш очень тесно связанный вопроскак сгенерировать только один специальный символ в этом генераторе паролейвопрос,

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

Я оставляю вам решать, как генерировать отдельных персонажей, чтобы вы получили распределение групп персонажей по своему вкусу. Это выходит за рамки вашего вопроса и потребовало бы написания ваших требований (т. е. написанияваш вопрос) для тебя.

Связанный контент