【发布时间】: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
有没有办法在使用python-gerrit-api模块时不对python脚本中的密码进行硬编码?
from gerrit import GerritClient
gerrit = GerritClient(base_url="https://yourgerrit", username='******', password='xxxxx')
【问题讨论】:
标签: python python-3.6 gerrit
对此有几种可能的解决方案:
解决方案 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>
【讨论】: