首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Python的子进程打印密码提示

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

Stack Overflow用户
提问于 2016-01-06 19:01:23
回答 2查看 1K关注 0票数 2

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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”密码“吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-20 19:04:04

subprocess不会在进程中间返回输出,在输入用户输入之前,进程将不会完成。

票数 -1
EN

Stack Overflow用户

发布于 2016-01-06 19:12:06

这是一个交互的东西,所以你不应该打电话给check_output。这通常用于子进程,它将做一些事情,然后终止(不需要键盘输入)。

您可以通过创建一个Popen实例,然后使用Popen.communicate与它交互,来做您想做的事情。但是,要将输入发送到进程stdin,并正确地从它的stdout中读取行,而不需要死锁或缓冲复杂,这是很棘手的。

还有一个更好的方法:pexpect在这方面做得很好。我建议在这里放弃subprocess,而改用pexpect

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34640706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档