bashを使用して端末でmacOSに似たパスワードを生成する

bashを使用して端末でmacOSに似たパスワードを生成する

アカウント作成中にAppleが要求するパスワードパターンに従うパスワードを生成したいと思います。

パスワード文字列パターンは次のとおりですxxxxxx-xxxxxx-xxxxxx。そのうちの1つxは数字、1つxは大文字です。ハイフンも含める必要があります。

結果は次のとおりです。abcdef-ghijk3-mnoPqr-3数字はどこにあり、P大文字はどこにありますか?

有効な出力は次のとおりです。

  • abcdef-ghijk1-mnoPqr1そしてP
  • abcd3F-ghijkl-mnopqr3そしてF
  • abcdef-Ghijkl-mn0pqrGそして0
  • abcdef-nhijk1-mnqrX1そしてX

無効な出力は次のとおりです。

  • aBCD3f-Nh1jk1-Mn0qr
  • AbcDwF-gH1jJl-mn0FqR

sed一般的なbashコマンドまたは同様のコマンドを使用してこれをどのように実行しますかawk

ベストアンサー1

私の警告コメントにもかかわらず、そして

rndchar() {
    local i=$(( 1 + RANDOM % $# ))
    echo "${!i}"
}

makepasswd() {
    local chars=()
    for i in {1..16}; do chars+=("$(rndchar {a..z})"); done
    chars+=("$(rndchar {A..Z})")
    chars+=("$(rndchar {0..9})")

    mapfile -t chars < <(printf '%s\n' "${chars[@]}" | shuf)

    local IFS=
    printf '%s-%s-%s\n' "${chars[*]:0:6}" "${chars[*]:6:6}" "${chars[*]:12:6}"
}

それから

$ for in in {1..5}; do makepasswd; done
qek5qo-Mfwtqm-ujwrni
zkcfjd-gDgleh-zklhk2
Qureng-alsyus-y8nbvp
lbkusw-fSkqua-ghws4x
uKope4-vrzeqm-iwidgw

ツールパイプラインの使用:必須ランダムな文字ジェネレータで

makepasswd() {
    (   chars=$(openssl rand -base64 1024)
        tr -cd '0-9' <<<"$chars" | head -c 1
        tr -cd 'A-Z' <<<"$chars" | head -c 1
        tr -cd 'a-z' <<<"$chars" | head -c 16
    ) | sed 's/./&\n/g' \
      | shuf \
      | paste -d '' - - - - - - \
      | paste -d '-' - - -
}
$ for in in {1..5}; do makepasswd; done
aubbbm-qelNvl-0mbhbf
zyqvon-oqifkv-fkbgW2
wtzqpo-yl0mce-xaquhQ
xljzp8-xdfoeW-wxokxf
cqydyt-f6mwmn-vqLkce

おすすめ記事