"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가 찾은 이 답변에 표시된 대로 컬의 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)

=()이는 기술적으로 콘텐츠를 zsh 의 파일로 저장하는 zsh의 프로세스 대체를 사용하므로 /tmp기준을 충족하지 않습니다. 그러나 zsh는 명령이 완료되면 자동으로 제거합니다.

답변2

wget명령줄 매개변수가 있습니다.

그래서 이거

wget -O - yourlink 

이제 wget 출력을 stdout원하는 곳으로 리디렉션할 수 있습니다.

-O -다운로드한 파일을 여기로 보내세요 stdout.

wget 문서 링크

관련 정보