wget의 출력 스트림을 가져와서 sftp put(wget|sftp)으로 파이핑하려고 했지만 작동하지 않습니다. 어떻게 해야 합니까? ,요구사항은
스트림을 로컬 서버에 파일로 저장하고 싶지 않습니다.
이것이 정말로 가능합니까? wget | ssh를 사용하여 이 작업을 수행할 수 있습니다. sftp를 실행하고 단일 명령을 입력하는 명령이 있습니다.
sftp user@serverName:/tmp <<< $'put ./fileName'
답변1
편집: TL;DR openssh의 클라이언트에서는 이 작업을 수행할 수 없지만 sftp
Aditya 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
.