我正在尝试以下
from subprocess import Popen, PIPE
Popen(["scp", "-B","user@url:file", "."], stdin=PIPE, shell=False).communicate(input="password")
但是我仍然收到密码提示,并且没有发送密码。我知道我可以将 scp 与键一起使用,但这不是我需要的。
有什么帮助吗?
scp直接与终端交互,而不是从STDIN读取,您不能通过管道传递密码,这对 scp 来说是安全问题,对于 sftp、ssh 也是如此。
你可以像这样在你的终端中尝试它(它不会工作):
echo "password" | scp me@localhost:test .
正如其他人所说,scp(和ssh)直接从控制台而不是stdin读取密码,因此使用子进程发送密码将不起作用。您可以改用pexpect - 请参阅文档和大量示例以了解如何执行此操作。