我想从 python3 运行 docker 登录而不要求用户输入。 我有三个全局变量
REGISTRY_URL, USERNAME, PASSWORD
。
我想跑步:
os.system(f"echo '{PASSWORD}' | docker login {REGISTRY_URL} -u {USERNAME} --password-stdin")
问题是我的三个全局变量是用户可控的,这可能导致远程代码执行。
如何使用
subprocess.run
安全地运行此命令?
(注意:我不想使用 docker 的
-p
选项,因为它根据 docker 的建议并不安全)
您可以使用 subprocess.run 的
input
参数提供密码:
import subprocess
def docker_login(registry_url, username, password):
command = ["docker", "login", registry_url, "-u", username, "--password-stdin"]
completed_process = subprocess.run(command, input=password.encode(), capture_output=True)
if completed_process.returncode == 0:
print("Docker login successful!")
else:
print("Docker login failed. Error message:")
print(completed_process.stderr.decode())
docker_login(REGISTRY_URL, USERNAME, PASSWORD)