Password
如何在 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
您可以將特殊字元與 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