python-gerrit-api 替代身份验证

问题描述 投票:0回答:1

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

from gerrit import GerritClient
gerrit = GerritClient(base_url="https://yourgerrit", username='******', password='xxxxx')
python python-3.6 gerrit python-gerrit-api
1个回答
0
投票

对此有一些可能的解决方案:

解决方案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>
© www.soinside.com 2019 - 2024. All rights reserved.