【问题标题】:python-gerrit-api alternative authenticationpython-gerrit-api 替代身份验证
【发布时间】:2021-04-22 12:49:03
【问题描述】:

有没有办法在使用python-gerrit-api模块时不对python脚本中的密码进行硬编码?

from gerrit import GerritClient
gerrit = GerritClient(base_url="https://yourgerrit", username='******', password='xxxxx')

【问题讨论】:

    标签: python python-3.6 gerrit


    【解决方案1】:

    对此有几种可能的解决方案:

    解决方案 1:

    使用 python argparse 模块使用命令行参数将密码作为 CLI 的输入。设置 $GERRIT_PASSWORD 环境变量,并在密码参数中使用它。

    ./script.py --username=$GERRIT_USERNAME --password=$GERRIT_PASSWORD

    import argparse
    
    parser = argparse.ArgumentParser()
    parser.add_argument('--username', help='Username')
    parser.add_argument('--password', help='Password')
    args = parser.parse_args()
    
    username = args.username
    password = args.password
    
    from gerrit import GerritClient
    gerrit = GerritClient(base_url="https://yourgerrit", username=username, password=password)
    

    注意:您可以通过使用os.environ,而不是使用argparse 模块直接获取代码中环境的值来实现类似的状态。但是,推荐的方法是使用参数提供输入。

    解决方案 2:

    使用 python getpass 模块,以交互方式将密码作为用户输入:

    import getpass
    
    username = input("Username: ")
    password = getpass.getpass(prompt="Password: ")
    
    from gerrit import GerritClient
    gerrit = GerritClient(base_url="https://yourgerrit", username=username, password=password)
    

    上述两种解决方案都源于通过 HTTPS 访问 Gerrit 要么需要在 CLI 命令中输入密码,要么需要用户以交互方式输入。

    (i)
    git clone "https://$USERNAME:$PASSWORD@$GERRIT_HOST/$PROJECT"
    
    (ii)
    git clone "https://$USERNAME@$GERRIT_HOST/$PROJECT"
    Password for 'https://$USERNAME@$PROJECT': <Enter the password>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 2012-05-11
      • 2020-03-21
      • 2019-01-05
      相关资源
      最近更新 更多