randomとstringモジュールを使用して指定されたルールパスワードの生成を実現


需要:自動化パスワード変更ツールを使用してサーバーのパスワードを変更する場合、ランダムに生成されたパスワード文字列は必ずしも私のパスワードルールに合致しないため、変更に失敗します.ルールは、少なくとも3つの数字、3つの小文字、1つの大文字を含み、長さは8桁以上である.実装コードは次のとおりです.
def get_passwd(length=20):
    passwds = []
    while True:
        passwd = set(random.sample(string.ascii_letters + string.digits, length))
        if len(passwd.intersection(string.ascii_uppercase)) >= 1 and len(passwd.intersection(string.ascii_lowercase)) >= 3 and len(passwd.intersection(string.digits)) >= 3:
            passwds.append(''.join(passwd))
            break
    return passwds[0]