命令通过subprocess.Popen运行需要输入,但手动运行命令不需要

时间:2017-08-26 02:00:21

标签: python linux

我正在尝试自动化流程。如果我运行命令" nexec -i $ HOST现金状态"手动我看到预期的结果。但是,当使用python脚本并运行如下命令时:

p = subprocess.Popen(command, stdout = subprocess.PIPE, shell=True)
runningAppString, err = p.communicate()

脚本挂起,因为会出现一个提示,询问用户想要登录的登录类型。我可以通过打开stdin PIPE和p.communicate来解决这个问题(输入=" 3")但我不明白为什么会这样。另外,当我上周第一次开始使用脚本IIRC时,只有stdout管道正常工作。为什么会发生这种情况?处理它的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试将命令拆分为数组:

p = subprocess.Popen(["nexec", "-i", "$HOST", "cash", "status"])