1

我正在尝试以下

from subprocess import Popen, PIPE
Popen(["scp", "-B","user@url:file", "."], stdin=PIPE, shell=False).communicate(input="password")

但是我仍然收到密码提示,并且没有发送密码。我知道我可以将 scp 与键一起使用,但这不是我需要的。

有什么帮助吗?

4

2 回答 2

2

scp直接与终端交互,而不是从STDIN读取,您不能通过管道传递密码,这对 scp 来说是安全问题,对于 sftp、ssh 也是如此。

你可以像这样在你的终端中尝试它(它不会工作):

echo "password" | scp me@localhost:test .
于 2010-11-10T12:15:51.213 回答
1

正如其他人所说,scp(和ssh)直接从控制台而不是stdin读取密码,因此使用子进程发送密码将不起作用。您可以改用pexpect - 请参阅文档和大量示例以了解如何执行此操作。

于 2010-11-10T13:44:55.817 回答