2016-07-29 96 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

相關問題