Generieren Sie ein Passwort mit einer zufälligen Länge zwischen 8 und 16 Zeichen (ich habe den Generator, aber er ist nicht dynamisch)

Generieren Sie ein Passwort mit einer zufälligen Länge zwischen 8 und 16 Zeichen (ich habe den Generator, aber er ist nicht dynamisch)

Dies ist mein Passwortgenerator. Er generiert 8 Zeichen und mischt sie. Aber ich muss die Länge dynamisch gestalten. Wie würde ich das machen? Die Ausgabe hätte also eine unterschiedliche Länge zwischen 8 und 16 Zeichen.

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

Antwort1

Satz

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

und dann $lenCharaktere zu generieren, unter Verwendung eines Rahmens wie dem, den ich in meiner Antwort auf Ihre sehr eng verwandteSo generieren Sie in diesem Passwortgenerator nur ein SonderzeichenFrage,

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

Ich überlasse es Ihnen, zu entscheiden, wie Sie die einzelnen Zeichen generieren, damit Sie eine Zeichengruppenverteilung nach Ihren Wünschen erhalten. Das geht über den Rahmen Ihrer Frage hinaus und würde dazu führen, dass Sie Ihre Anforderungen schreiben müssen (d. h. schreibenIhre Frage) für Sie.

verwandte Informationen