0

这是我的 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). 为什么输出没有存储在通信()的返回元组中?

4

1 回答 1

2

你需要给subprocess.Popen调用一个stdout参数。例如:

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

该命令的输出随后会出现在您期望的位置。

于 2016-07-29T16:33:06.517 回答