少なくとも2つの数字、2つの大文字、1つの記号、xの小文字を含み、最大長が16のパスワードを生成します。

少なくとも2つの数字、2つの大文字、1つの記号、xの小文字を含み、最大長が16のパスワードを生成します。

パスワードpwgenを生成しようとしましたが...正確な単語と数を生成するのに十分ではありません...makepasswd

pwgen -c -n -y -B  12 1

最小数を定義できないため、期待どおりに機能しません。
各テキストタイプに許可される最小文字と最大文字を定義したいのですが...これには機能がありますか
?他の提案ツールはありますか?最も広く使用されているシェルスクリプト...(正規表現を使用)crunch

事前にありがとう

ベストアンサー1

動作するまでこれを実行します(正規表現のマッチングをサポートする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
    

おすすめ記事