Как перенаправить поток вывода 'wget' на 'sftp put'?

Я попытался взять выходной поток wget и направить его в sftp put, (wget|sftp), но это не сработало. Как мы можем это сделать?, условие

Я не хочу сохранить поток локально на моем сервере в виде файла.

Это действительно возможно? Мы можем сделать это с помощью wget | сш,. У меня есть команда ниже, чтобы сделать sftp и ввести одну команду.

sftp user@serverName:/tmp <<< $'put ./fileName'
0
23.06.2020, 21:27
2 ответа

РЕДАКТИРОВАТЬ :TL;DR Вы не можете сделать это с помощью клиента openssh sftp, но вы можете с реализацией sftp curl, как показано в этом ответе, найденном Адитьей Шоу:

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, которая технически сохраняет содержимое в виде файла в /tmp, так что это не соответствует вашему условию. Однако zsh автоматически удаляет его по завершении команды.

0
18.03.2021, 23:24

wgetимеет аргументы строки команды -для этого.

Итак, это

wget -O - yourlink 

отправит вывод wget на stdout. Теперь вы можете перенаправить его куда угодно.

Здесь -O -отправляет загруженный файл на stdout.

Ссылка на документ wget

0
18.03.2021, 23:24

Теги

Похожие вопросы