2016-07-29 73 views
0

这里是我的Python终端的副本:的Python:subprocess.Popen()进行通信()打印一个SSH命令的输出到标准输出,而不是返回输出

>> 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) 。为什么不将输出存储在通信()的返回元组中?

回答

2

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

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

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

+0

啊,那是一个大脑放屁。谢谢 – user2824889

相关问题