SuSe 12で任意の複雑なパスワードを作成する方法

SuSe 12で任意の複雑なパスワードを作成する方法

次の要件に従って、任意のパスワードを生成する方法が必要です。

  • パスワードは9文字以上でなければなりません。
  • 大文字2個以上
  • 小文字2つ以上
  • 少なくとも2桁
  • 特殊文字2個以上
  • 文字で始める必要があります。

これは私のコマンドです:

{ shuf -r -n4 -e {A..Z}; shuf -r -n4 -e {a..z}; shuf -r -n4 -e {0..9}; } | shuf | tr -d $'\n'

しかし、特殊文字が欠けています。

オペレーティングシステムはSuSE 12です。

ベストアンサー1

shuf中括弧の拡張や類似の範囲を使用せずに、他の文字を使用して特殊文字を追加できます。

ただし、明示的に1つずつ一覧表示して引用することで、シェルから保護できます。

shuf -r -n2 -e '!' '"' '#' '$' % '&' '(' ')' '*' + , - . / : ';' '<' = '>' '?' @ '[' '\' ']' '^' _ '{' '|' '}'

または、文字列に入れてトークン化を使用して複数のパラメータに入れます。ただし、グローブを無効にする必要がありますset -f。そうしないと、アスタリスクが原因で問題が発生します。

set -f
shuf -r -n2 -e $(sed -e 's/./& /g' <<< '!"#$%&()*+,-./:;<=>?@[\]^_{|}' )

(または誰もがするように、固定された2つの特殊文字を合理的なパスワードの末尾に追加するだけです。


最初の文字が文字であることを確認する最も簡単な方法は、文字だけを追加してから、残りのパスワードに対して文字を混ぜることです。たとえば、これはパスワードを2つの部分に分割します。最初の部分は単一文字(大文字または小文字)で、2番目の部分はコメントに入力したものです。

#!/bin/bash

set -f
pw=$(shuf -r -n1 -e {A..Z} {a..z})
pw="$pw$( { shuf -r -n4 -e {A..Z}; shuf -r -n4 -e {a..z}; shuf -r -n4 -e {0..9}; shuf -r -n2 -e $(sed -e 's/./& /g' <<< '@%+\/!#$^?:.(){}[]-_.'); } | shuf | tr -d '\n' )"
echo "$pw"

出力は次のとおりです。

$ bash pw.sh 
WRgpJ7pP%Tj60.1
$ bash pw.sh 
oV6N#7s4Po3Bt)r

おすすめ記事