我正在尝试构建一个脚本,我需要在其中创建一个具有以下参数的密码生成器:
- 长度必须至少为 8 个字符,但不得超过 16 个字符。
- 必须至少包含 1 个数字 (0-9)。
- 必须至少包含 1 个小写字母。
- 必须至少包含 1 个大写字母。
- 必须恰好包含一个且仅一个
@ # $ % & * + - =
我有两个想法:
首先 :
#!/bin/bash
#
#Password Generator
#
#
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''z''f''g''h''i''j''k''l''m''o'''p''q''r''s''t''u''v''w''x''y''z')
Numbers=('1''2''3''4''5''6''7''8''9')
SpecialChar=('@''#''$''%''&''*''+''-''=')
if [ S# -eq 0 ] ; then
Pwlength=`shuf -i 8-16 -n 1`
Password=`< /dev/urandom tr -dc A-Za-z0-9$SpecialChar | head -c $Pwlength`
echo "Random Password is being generated for you"
sleep 5
echo "Your new password is : $Password"
exit
问题是我得到了我什至没有定义的字符?
第二个想法:
for((i=0;i<4;i++))
do
password=${Upper[$random % ${#Lower[@]} ] }
password=${Upper[$random % ${#Upper[@]} ] }
password=${Upper[$random % ${#Number[@]} ] }
password=${Upper[$random % ${#SpecialChar[@]} ] }
done
由于某种原因,它们都不起作用;/