1

私は次のことを試みています

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

しかし、私はまだパスワードpromtを取得し、パスワードは送信されません。キーで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 に答える