的Python:subprocess.Popen()进行通信()打印一个SSH命令的输出到标准输出,而不是返回输出
问题描述:
这里是我的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)
。为什么不将输出存储在通信()的返回元组中?
答
您需要给subprocess.Popen
调用一个stdout
参数。例如:
>>> subprocess.Popen("ls", stdout=subprocess.PIPE).communicate()
(b'Vagrantfile\n', None)
>>>
该命令的输出出现在您期望的位置。
啊,那是一个大脑放屁。谢谢 – user2824889