Python:subprocess.Popen()。communicate()将SSH命令的输出打印到stdout而不是返回输出

时间:2016-07-29 16:25:33

标签: python python-2.7 subprocess shlex

这是我的python终端的副本:

>> import subprocess
>> import shlex
>> host = 'myhost'
>> subprocess.Popen(shlex.split('ssh -o LogLevel=error -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes %s "hostname --short"' % (host))).communicate()
myhost
(None, None)

我希望输出为('myhost', None)。为什么输出没有存储在返回元组中进行通信()?

1 个答案:

答案 0 :(得分:2)

您需要为subprocess.Popen调用stdout个参数。例如:

>>> subprocess.Popen("ls", stdout=subprocess.PIPE).communicate()
(b'Vagrantfile\n', None)
>>>

然后命令的输出显示在您期望的位置。