gpt4 book ai didi

python - 使用 Python 的子进程打印密码提示

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:20 25 4
gpt4 key购买 nike

如果我使用 subprocess 从 Python 运行终端命令,我该如何打印密码提示?

我有一个 Python 脚本,它要求用户通过 Kerberos 进行身份验证。我的程序基本上是这样的:

import subprocess

def kinit():
kinit = "kinit -f"
prompt = subprocess.check_output(kinit, shell=True)
print prompt ## echoes "Password for username@domain.com" AFTER pw input

if __name__=="__main__":
kinit()
doOtherStuff()

当这个脚本从终端启动时,程序等待密码输入(可以通过命令行输入),但它只显示“username@domain.com的密码”在用户输入密码后提示。

您知道我如何在 Python 脚本等待用户输入密码之前显示“username@domain.com 的密码”吗?

最佳答案

这是一个交互式的东西,所以你不应该调用 check_output。这通常用于将执行一些操作然后终止的子进程(无需键盘输入)。

您可以创建一个 Popen 实例,然后使用 Popen.communicate 与其进行交互,从而实现您想要的效果。但是将输入发送到进程标准输入并从它的标准输出中正确读取行而不会出现死锁或缓冲并发症可能会很棘手。

还有更好的方法:pexpect非常适合这个。我建议在此处放弃 subprocess,转而使用 pexpect

关于python - 使用 Python 的子进程打印密码提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com