Python 如何获得终端输出?

Python 如何获得终端输出?,python,subprocess,raspberry-pi,Python,Subprocess,Raspberry Pi,背景 作为一个有趣的项目,我决定为我的新Raspberry Pi创建一个远程控制应用程序。我知道如何使用SSH,但我想在Python中实现类似的东西。如何获取打印到终端上的文本以显示在Python shell中 我退房了,但没用。我的意思是,我无法看到输出文本。如果我输入passwd,它只给我 Changing password for User. 但它并没有给我互动的机会。这就是我想弄明白的 注意:我的Raspberry Pi是在“Wheezy”上运行的。另外,如果这个程序可以与其他操作系统

背景

作为一个有趣的项目,我决定为我的新Raspberry Pi创建一个远程控制应用程序。我知道如何使用SSH,但我想在Python中实现类似的东西。如何获取打印到终端上的文本以显示在Python shell中

我退房了,但没用。我的意思是,我无法看到输出文本。如果我输入passwd,它只给我

Changing password for User.
但它并没有给我互动的机会。这就是我想弄明白的

注意:我的Raspberry Pi是在“Wheezy”上运行的。另外,如果这个程序可以与其他操作系统(如Windows 7、Mac OS X)一起使用,那就太好了

代码


如果您想编写SSH之类的东西,就必须制作一个伪终端。看看。

你所说的“但它不起作用”是什么意思。?你能准确地告诉我们你在做什么以便我们可以帮助诊断吗?此代码中没有定义cmd。否则,除非您的命令在stdout中不输出任何内容,否则它应该可以工作。对我来说,它当然可以通过将cmd_格式更改为cmd来工作,但我认为它在复杂的命令行中有bug。您可以向我们展示您试图运行的命令。是的,这是预期的。交互式程序不是这样工作的。
import subprocess
import socket
import sys
import platform
import os

print "WELCOME TO xTROL. \n"

pyVER = sys.version
OS = platform.system()

print pyVER, "\n"
print "Running on %s" % (OS)
while True:
    INPUT = raw_input(">>>")
    cmd_FORMAT = INPUT.split()

    try:
        output = subprocess.Popen(cmd_FORMAT, stdout=subprocess.PIPE).communicate()[0]
        print output
    except Exception:
        print "Something went wrong."