私は次のことを試みています
from subprocess import Popen, PIPE
Popen(["scp", "-B","user@url:file", "."], stdin=PIPE, shell=False).communicate(input="password")
しかし、私はまだパスワードpromtを取得し、パスワードは送信されません。キーでscpを使用できることは知っていますが、これは私が必要としているものではありません。
何か助けはありますか?
scpは、 STDINから読み取るのではなく、端末と直接対話します。パイプを介してパスワードを渡すことはできません。scpのセキュリティは重要であり、sftp、sshの場合も同じです。
あなたはこのようにあなたのターミナルでそれを試すことができます(そしてそれは動作しません):
echo "password" | scp me@localhost:test .
他の人が言っているように、scp(およびssh)はstdinではなくコンソールから直接パスワードを読み取るため、サブプロセスを使用してパスワードを送信することはできません。代わりにpexpectを使用できます。これを行う方法については、ドキュメントと多数の例を参照してください。