Password

如何在 SuSe 12 中創建隨機複雜密碼

  • October 28, 2021

我需要一種按照以下要求生成隨機密碼的方法:

  • 密碼至少 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

您可以將特殊字元與 another 一起添加shuf,但不能使用大括號擴展和類似的範圍。

但是您可以一一明確列出它們,並引用它們以保護它們免受外殼的影響:

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

或者將它們塞進一個字元串並使用分詞將它們變成多個參數。但是,需要禁用 globbing set -f,否則星號會導致問題:

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

(或者只是做每個人都做的事情,並在原本合理的密碼末尾添加兩個固定的特殊字元,即使沒有它們也足夠長。)


為確保您有一個字母作為第一個字元,最簡單的方法是單獨添加一個,然後僅將密碼其餘部分的字元隨機排列。例如,這會將密碼分為兩部分,第一部分是單個字母(大寫或小寫),第二部分是您在評論中的內容:

#!/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

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