有没有办法在使用 python-gerrit-api 模块时不在 python 脚本中硬编码密码?
from gerrit import GerritClient
gerrit = GerritClient(base_url="https://yourgerrit", username='******', password='xxxxx')
对此有一些可能的解决方案:
解决方案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>