Ich bin neu im Bash Scripting und brauche Hilfe dabei. Ich habe dieses Passwort-Generator-Skript und es generiert 8 Zeichen langes Passwort. Ich habe versucht, es zufällige Länge erzeugen zu lassen, aber konnte es nicht tun. Kann mir jemand mit Bash-Skriptwissen einen Vorschlag machen, wie ich das machen könnte?
Hier ist mein Skript
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)
length=(0 1 2 3 4 5 7 8)
length2=${#length[*]} #${lower[$((RANDOM%length2))])
lower2=${#lower[*]} #${lower[$((RANDOM%lower2))]}
upper2=${#upper[*]} #${upper[$((RANDOM%upper2))]}
num2=${#num[*]} #${num[$((RANDOM%num2))]}
special2=${#special[*]} #${special[$((RANDOM%special2))]}
abc=`#${lower[$((RANDOM%lower2))]}`
echo "$word${special[$((RANDOM%special2))]}${num[$((RANDOM%num2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}$length" | fold -w 1 | shuf | tr -d "n"
echo
fi
Antworten:
1 für die Antwort № 1Bash "s $RANDOM
kann nicht verwendet werden, um zufällige Passwörter zu erzeugen, weil es zu vorhersehbar ist.
Verwenden Sie etwas wie, um ein sichereres Kennwort einer Pseudozufallslänge zu generieren
tr -cd "a-zA-Z0-9@#$^*-+" < /dev/urandom | head -c $((RANDOM % 8 + 16))
Natürlich schätze ich, dass Sie es einfach tun wollenDies für Lernzwecke, aber Leute, die später googlen "wie man zufällige Länge Passwörter in bash generiert" sollten nicht einen unsicheren Algorithmus als ihr erstes Ergebnis bekommen.