Python:执行scp,stdin密码无法正常工作

时间:2010-11-10 11:46:22

标签: python passwords stdin popen scp

我正在尝试以下

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

但我仍然获得密码promt,并且没有发送密码。 我知道我可以使用scp键,但这不是我需要的。

任何帮助?

2 个答案:

答案 0 :(得分:2)

scp 直接与终端进行交互,而不是从 STDIN 读取,你不能通过管道传递密码,它对scp的安全性很重要而且它是一样的对于sftp,ssh。

你可以在这样的终端尝试它(它不会起作用):

echo "password" | scp me@localhost:test .

答案 1 :(得分:1)

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