这是我的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)
。为什么输出没有存储在返回元组中进行通信()?
答案 0 :(得分:2)
您需要为subprocess.Popen
调用stdout
个参数。例如:
>>> subprocess.Popen("ls", stdout=subprocess.PIPE).communicate()
(b'Vagrantfile\n', None)
>>>
然后命令的输出显示在您期望的位置。