如果我使用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”密码“吗?
发布于 2016-06-20 19:04:04
subprocess
不会在进程中间返回输出,在输入用户输入之前,进程将不会完成。
发布于 2016-01-06 19:12:06
这是一个交互的东西,所以你不应该打电话给check_output
。这通常用于子进程,它将做一些事情,然后终止(不需要键盘输入)。
您可以通过创建一个Popen
实例,然后使用Popen.communicate
与它交互,来做您想做的事情。但是,要将输入发送到进程stdin,并正确地从它的stdout中读取行,而不需要死锁或缓冲复杂,这是很棘手的。
还有一个更好的方法:pexpect
在这方面做得很好。我建议在这里放弃subprocess
,而改用pexpect
。
https://stackoverflow.com/questions/34640706
复制相似问题