将密码传递给Python脚本的提示符

3

当我的Python脚本需要输入密码时,我该如何将密码直接传递给脚本?我不想让用户在提示时手动输入密码。

subprocess.run(['ansible-vault', 'decrypt', 'main.yml', 'linux.yml','--ask-vault-pass'])

运行脚本时会提示输入密码。我希望密码只能通过脚本传递,而不是由用户输入或通过密码文件传递。

是否有方法在此处传递密码?我有其他ansible vault选项,如vault-password等,但这并不能满足我的需求。


这个回答解决了你的问题吗?如何读取/处理命令行参数? - Shiva
当作为参数传递时,这个可以工作。在这里密码被提示,我想要传递它但是尝试了没有成功。 - Samna Najeeb
你可以尝试使用--vault-password-file选项,而不是--ask-valut-pass。这样你只需要将文件路径作为subprocess.run参数之一传递即可。 - Shiva
@shiva,那不符合我的要求。我不能将密码文件放在Python脚本之外。这需要密码文件。 - Samna Najeeb
抱歉,我没有仔细阅读问题。 - Shiva
1个回答

3

不需要使用命令行ansible-vault,你可以使用Python软件包- ansible-vault,它允许你在脚本中直接硬编码密码:

from ansible_vault import Vault

vault = Vault('password')
main_data = vault.load(open('main.yml').read())
linux_data = vault.load(open('linux.yaml').read())

由于你将密码硬编码到代码中,确保不要在任何地方提交此代码或将其发送给任何人,这是一个严重的安全风险。


1
更好的做法是,根本不要将其硬编码到代码中。使用.env文件来保持安全,并使用该文件的安全标准(不要提交到任何地方等)。 - Xiddoc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接