我是bash脚本的新手,需要帮助。 我有这个密码生成器脚本,它生成8个字符长的密码。我一直试图让它产生随机长度,但无法做到。拥有bash脚本知识的人能否给我一些关于如何做到这一点的建议?
这是我的剧本
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
答案 0 :(得分:1)
Bash的$RANDOM
无法用于生成随机密码,因为它太可预测了。
要生成伪随机长度的更安全的密码,请使用
之类的内容tr -cd 'a-zA-Z0-9@#$^*-+' < /dev/urandom | head -c $((RANDOM % 8 + 16))
当然,我很欣赏您只是为了学习目的而这样做,但是后来谷歌的人们如何在bash中生成随机长度的密码&#34;不应该得到一个不安全的算法作为他们的第一个结果。