我正在尝试使用运行 scp (安全副本)命令subprocess.Popen。登录名要求我发送密码:
scp
subprocess.Popen
from subprocess import Popen, PIPE proc = Popen(['scp', "user@10.0.1.12:/foo/bar/somefile.txt", "."], stdin = PIPE) proc.stdin.write(b'mypassword') proc.stdin.flush()
这立即返回错误:
user@10.0.1.12's password: Permission denied, please try again.
我 确定 密码正确。我可以通过scp在外壳上手动调用来轻松验证它。那为什么不起作用呢?
请注意,有许多与此类似的问题,询问subprocess.Popen并发送用于自动SSH或FTP登录的密码
这些问题的答案不起作用和/或不适用,因为我使用的是Python 3。
您链接的第二个答案建议您使用Pexpect(这通常是与需要输入的命令行程序进行交互的正确方法)。它的一个分支适用于python3,您可以使用它。