我正在关注许多其他这样的答案:
我发现subprocess.Popen
并未捕获标准输出,而是仍处于交互式会话中。
也就是说,当我连接以下内容时:
import subprocess
user = 'myuser'
host = 'myhost'
cmd = ['ssh', '-t', f'{user}@{hostname}']
chk = subprocess.Popen(cmd,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
此内容立即被拦截,我的终端希望进行以下操作:
The authenticity of host "" can't be established.
ECDSA key fingerprint is #####################################
Are you sure you want to continue connecting (yes/no/[fingerprint])?
这发生在我什至无法打电话之前:
out,err = chk.communicate()
这正是我希望将其重定向为subprocess.PIPE
的字符串的一部分,而不是等待键盘输入。如何才能将此消息捕获为字符串,而不是被迫与之交互?