Shell-Script

生成至少 2 個數字、2 個大寫字母、1 個符號、x 小寫字母和最大長度為 16 的密碼

  • July 2, 2020

我嘗試生成密碼… 但是這些不足以生成精確的文字和數字計數pwgenmakepasswd

pwgen -c -n -y -B  12 1

這無法按預期工作,因為我無法定義最小數字計數…

我想定義每種文字類型中允許的最小和最大字元…

是否crunch具有此功能?

你有什麼其他工具建議嗎?

最受歡迎的 shell 腳本…(使用正則表達式)

提前致謝

=~只需執行它直到它工作(在支持正則表達式匹配的較新版本的 bash 中):

unset pass; 
until [[ \
       $pass =~ [0-9].*[0-9] && 
       $pass =~ [A-Z].*[A-Z] && 
       $pass =~ [^A-Za-z0-9] \
     ]]; do 
   pass=$(LC_ALL=C pwgen -c -n -y -B  12 1) 
done

例如:

$ unset pass; until [[ $pass =~ [0-9].*[0-9] && $pass =~ [A-Z].*[A-Z] && $pass =~ [^A-Za-z0-9] ]]; do pass=$(LC_ALL=C pwgen -c -n -y -B  12 1); done; echo $pass
AhP4eej3bie#

請注意,我將“符號”定義為“不是字母也不是數字”。如果你願意,你可以選擇更嚴格的東西。

如果您的外殼不支持正則表達式匹配,請嘗試:

$ perl -le 'until ($pass =~ /\d.*\d/ && $pass =~ /[A-Z].*[A-Z]/ && $pass =~ /[^A-Za-z0-9]/){chomp($pass=`LC_ALL=C pwgen -c -n -y -B  12 1`)}; print "$pass"'
iep7EJ-o9ahf
   

引用自:https://unix.stackexchange.com/questions/596332