LINUX.ORG.RU
решено ФорумAdmin

curl прогрессбар при отправке файла на яндекс.диск

 


1

2

Гружу большой файл вот так:

curl -i -H "Host: webdav.yandex.ru" -H "Accept: */*" -H "Authorization: OAuth $YATOKEN" -T "$file" https://webdav.yandex.ru/

Файл грузится, все ок. А можно как-то показывать в консоли прогресс, сколько загрузилось? А то выдает HTTP/1.1 100 Continue и дальше тишина вплоть до ответа сервера в конце загрузки. Пробовал добавлять --progress-bar, все равно тишина.

А можно как-то показывать в консоли прогресс

ты не поверишь ....

curl --help
может ответить на все твои вопросы

novitchok ★★★★★
()
Ответ на: комментарий от Black_Roland

а по делу, почитай хелп по curl'у и удивись вместе с ТС

 curl --help | grep -i progress
 -#, --progress-bar  Display transfer progress as a progress bar

novitchok ★★★★★
()
Ответ на: комментарий от Black_Roland

я к чему и говорю, хелп внимательно и до конца читаем, потом спрашиваем, и кстате, в мане всё описано:

PROGRESS METER
       curl normally displays a progress meter during operations, indicating the amount of transferred data, transfer speeds and estimated time left, etc.

       curl  displays  this  data to the terminal by default, so if you invoke curl to do an operation and it is about to write data to the terminal, it disables the progress meter as otherwise it would mess up the
       output mixing progress meter and response data.

       If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (>), -o [file] or similar.

       It is not the same case for FTP upload as that operation does not spit out any response data to the terminal.

       If you prefer a progress "bar" instead of the regular meter, -# is your friend.

novitchok ★★★★★
()

Кстати, а почему curl? Используй cadaver:

cadaver https://webdav.yandex.ru/ <<EOF
put file
EOF

Только логин, пароль в ~/.netrc пропиши.

machine webdav.yandex.ru
login login
password secret
Black_Roland ★★★★
()
Ответ на: комментарий от novitchok

Я читал это, но как-то пропустил мимо. Не понял логику, что чтобы показать прогрессбар, нужно перевести вывод команды куда-нибудь еще. И он появится. В общем, вот это начало отображать данные процесса загрузки:

curl -i -H "Host: webdav.yandex.ru" -H "Accept: */*" -H "Authorization: OAuth $YATOKEN" -T "$file" https://webdav.yandex.ru/ > /dev/null
А если добавить --progress-bar, то будет прогрессбар.

iamroman
() автор топика
Ответ на: комментарий от iamroman

Потому что curl в стандартный вывод печатает ответ сервера на POST- или PUT-запрос. Если не перенаправить, то прогрессбар потенциально выведется поверх ответа сервера.

intelfx ★★★★★
()
Ответ на: комментарий от novitchok

Это называется unix-way: вместо того, чтобы каждой утилите пилить свою перделку в виде прогресс-бара, достаточно pv.

mix_mix ★★★★★
()

Яндекс диск это зло. Не пользуйтесь им пожайлуста, если вы будите делиться файлом еще с кем-то. Нажимание на кнопку «скачать файл» не приводит не к чему, ошибки js если еще какие-либо в консоль не валятся. Последний раз когда скачивал, с этого ужаса пришлось зарегистрировать временный аккаунт и тогда файлы магическим образом начинают скачиваться. Даже у dropbox нет такого безобразия.

anonymous_sama ★★★★★
()
5 февраля 2016 г.

Вот такая команда у меня работает даже на винде

curl -k -T "file.mkv" https://login:password@webdav.yandex.ru/ --verbose -o /dev/stdout

или с визуальным отображением процента выполнения, но без отсчета времени и прочего

curl -k -T "file.mkv" https://login:password@webdav.yandex.ru/ --progress-bar --verbose -o /dev/stdout
вместо /dev/stdout можно что угодно вписать и verbose не обязательно.

deniskx
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.