「wget」出力ストリームを「sftp put」にリダイレクトする方法は?

「wget」出力ストリームを「sftp put」にリダイレクトする方法は?

wgetの出力ストリームを取得してsftp put(wget | sftp)にパイピングしようとしましたが、うまくいきません。どうすればいいですか? 、要求事項は

ストリームをローカルサーバーにファイルとして保存したくありません。

これは本当に可能ですか? wget | sshを使用してこれを行うことができます。 sftpを実行して単一のコマンドを入力するコマンドがあります。

sftp user@serverName:/tmp <<< $'put ./fileName'

ベストアンサー1

編集:TL; DR opensshのクライアントではこれを行うことはできませんが、sftpAditya Shawが見つけたこの回答に示すように、curlのsftp実装を使用できます。

https://serverfault.com/questions/400203/how-to-pipe-data-to-sftp-connection/934153#934153

もともと、

$ wget -O - google.com | curl -T - -u remote_user sftp://remote_server/home/remote_user/fileName

編集終了

不可能に見える。私は以前試しました:

$ wget -O - google.com | sftp -b <(printf "%s\n" 'put /dev/stdin ./fileName') localhost 

しかし、sftpパイプのような非伝統的なファイルからコピーすることは不可能に見えます。

sftp> put /dev/stdin ./fileName
/dev/stdin is not a regular file

あなたができる最も近いことはおそらく次のとおりです。

$ sftp -b <(printf "%s\n" 'put /dev/stdin ./fileName') localhost < =(wget -O - google.com)

=()これは、技術的にコンテンツをzs​​hのファイルとして保存するzshのプロセスオーバーライドを使用するため、/tmp基準を満たしていません。ただし、zsh はコマンドが完了すると自動的に削除します。

おすすめ記事