비밀번호 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
답변2
Perl 모드와 함께 GNU grep을 설치한 경우 제한 사항에 따라 비밀번호를 생성할 수 있습니다.
$ < /dev/urandom \
tr -cd '[:alnum:][:punct:]' | fold -w 12 |
grep -Pm1 '(?=.*[[:upper:]].*[[:upper:]])(?=.*[[:digit:]].*[[:digit:]])(?=.*[[:punct:]])'
A09B?~WR~$#J