- Команда curl. Синтаксис. Примеры использования
- Синтаксис и опции curl
- Просмотр версии curl
- Скачивание файла
- Возобновление прерванной загрузки
- Скачивание нескольких файлов
- Использование прокси-сервера
- Запрос HTTP-заголовков
- cURL POST-запросы с параметрами
- Загрузка файлов на FTP-сервер
- Указание агента пользователя
- Запись файлов cookie с веб-сайта
- Отправка файлов cookie на сайт
- Изменение разрешения имен
- Ограничение скорости скачивания
- Заключение
- Руководство по команде curl для начинающих
- Команда curl
- Q1. Как работает команда curl?
- Q2. Как заставить curl использовать то же имя для скачиваемого файла?
- Q3. Как скачать несколько файлов, используя curl?
- Q4. Как решить проблему с «Moved»?
- Q5. Как возобновить загрузку с точки прерывания?
- Заключение
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- 15 примеров CURL в Linux
- Посмотреть версию curl
- Скачать файл
Команда curl. Синтаксис. Примеры использования
Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.
Синтаксис и опции curl
Синтаксис команды следующий:
В качестве аргумента задается, как правило, URL скачиваемого файла. Основные опции перечислены ниже
-# — отображать простой прогресс-бар во время загрузки;
-0 — использовать протокол http 1.0;
-1 — использовать протокол шифрования tlsv1;
-2 — использовать sslv2;
-3 — использовать sslv3;
-4 — использовать ipv4;
-6 — использовать ipv6;
-A — указать свой USER_AGENT;
-b — сохранить Cookie в файл;
-c — отправить Cookie на сервер из файла;
-C — продолжить загрузку файла с места разрыва или указанного смещения;
-m — максимальное время ожидания ответа от сервера;
-d — отправить данные методом POST;
-D — сохранить заголовки, возвращенные сервером в файл;
-e — задать поле Referer-uri, указывает с какого сайта пришел пользователь;
-E — использовать внешний сертификат SSL;
-f — не выводить сообщения об ошибках;
-F — отправить данные в виде формы;
-G — если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
-H — передать заголовки на сервер;
-I — получать только HTTP заголовок, а все содержимое страницы игнорировать;
-j — прочитать и отправить cookie из файла;
-J — удалить заголовок из запроса;
-L — принимать и обрабатывать перенаправления;
-s — максимальное количество перенаправлений с помощью Location;
-o — выводить контент страницы в файл;
-O — сохранять контент в файл с именем страницы или файла на сервере;
-p — использовать прокси;
—proto — указать протокол, который нужно использовать;
-R — сохранять время последнего изменения удаленного файла;
-s — выводить минимум информации об ошибках;
-S — выводить сообщения об ошибках;
-T — загрузить файл на сервер;
-v — максимально подробный вывод;
-y — минимальная скорость загрузки;
-Y — максимальная скорость загрузки;
-z — скачать файл, только если он был модифицирован позже указанного времени;
-V — вывести версию.
Основные опции мы рассмотрим на простых примерах.
Просмотр версии curl
Опция -V или —version выводит не только версию curl, но и краткую информацию о поддерживаемых протоколах и функциях:
Скачивание файла
Если вам требуется скачать файл, запустите curl с опцией –O или –o. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.
Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.
Cохранение файла под именем newfile в директории /tmp/examplе/.
Возобновление прерванной загрузки
Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции -C – (дефис, С, тире):
Скачивание нескольких файлов
Следующая команда позволит вам скачать info.html с http://yoursite.com и about.html c http://mysite.com в один прием:
Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):
Использование прокси-сервера
Если вы подключены через прокси-сервер, нужно указать его команде curl при помощи следующих опций (в данном примере имя сервера proxy.yourdomain.com, порт 8080, имя пользователя user, пароль qwerty1234):
Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.
Запрос HTTP-заголовков
HTTP-заголовки позволяют удаленному веб-серверу помимо ответа на сам запрос отправлять дополнительную информацию. Она предоставляет клиенту данные о том, как обрабатывать ответ:
Для запроса HTTP-заголовков веб-сайта выполните команду с опцией -I:
$ curl -I https://itproffi.ru
Также эту информацию можно получить, воспользовавшись функциями браузера для разработчиков.
cURL POST-запросы с параметрами
Следующая команда отправит на https://yourdomain.com/info.php параметры firstName и lastName с соответствующими значениями:
Этим приемом можно пользоваться для симуляции работы обычных веб-форм.
Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):
Если FTP-сервер поддерживает анонимный вход, параметр –u с именем пользователя и пароля указывать не нужно.
Загрузка файлов на FTP-сервер
Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:
Указание агента пользователя
Агент пользователя – часть информации HTTP-запроса. Она показывает, каким браузером пользуется клиент. Можно посмотреть, что имеющаяся версия curl передает по умолчанию и установить новое значение:
Запись файлов cookie с веб-сайта
Хотите посмотреть, какие файлы cookie скачиваются на ваш компьютер, когда вы заходите на определенный сайт? Опция —cookie-jar сохраняет их список в файл, который в дальнейшем можно просмотреть при помощи команды cat.
Отправка файлов cookie на сайт
Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:
Изменение разрешения имен
Если вы веб-разработчик и хотите протестировать локальную версию сайта, прежде чем загружать его на сервер, при помощи опции —resolve можно указать curl выполнять разрешение имени вашего сайта на адрес локального узла, например:
Таким образом, при запросе на http://www.yourdomain.com curl будет запрашивать сайт с локального узла, а не использовать DNS или файл /etc/hosts.
Ограничение скорости скачивания
Чтобы curl не занимал всю пропускную способность канала, можно ограничить скорость скачивания при помощи опции —limit-rate:
Заключение
Мы рассмотрели краткую историю появления curl и наиболее характерные примеры применения этой команды. Для более подробной информации можно обратиться к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Руководство по команде curl для начинающих
Оригинал: Linux curl Command Tutorial for Beginners (5 Examples)
Автор: Himanshu Arora
Дата публикации: 26 июля 2018 года
Перевод: А. Кривошей
Дата перевода: февраль 2019 г.
Хотя основным средством, с помощью которого пользователи загружают данные из интернета, являются веб-браузеры, существуют команды Linux, которые также позволяют вам это делать. Эти утилиты пригодятся в системах, где нет графического интерфейса.
В этом руководстве мы обсудим одну из таких команд — curl, которая, помимо прочего, позволяет загружать данные из Интернета. Обратите внимание, что примеры, обсуждаемые в этой статье, тестируются на Ubuntu 16.04 LTS.
Команда curl
Команда curl позволяет вам загружать данные из командной строки Linux. Ниже приводится ее синтаксис:
И вот что говорит об этой команде ее man-страница:
curl — это инструмент для передачи данных с или на сервер, используя один из поддерживаемых протоколов (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET и TFTP). Команда предназначена для работы без взаимодействия с пользователем.
curl предлагает множество полезных трюков, таких как поддержка прокси, пользовательская аутентификация, загрузка по FTP, HTTP post, SSL соединения, куки, передача файлов, возобновление загрузок, Metalink и многое другое.
curl работает на базе libcurl для всех функций, связанных с передачей данных. См. libcurl (3) для деталей.
Ниже приведены примеры в стиле вопрос/ответ, которые должны дать вам лучшее представление о том, как работает curl
Q1. Как работает команда curl?
Основное использование довольно просто — просто передайте URL-адрес в качестве параметра в команду curl и перенаправьте вывод в файл.
Обратите внимание, что вы также можете использовать здесь опцию -o.
Возвращаясь к нашему примеру, пока данные загружались в файл ‘test.torrent’ в моей системе, в командной строке был получен следующий вывод:
Вот что говорит справочная страница об индикаторе прогресса, который отображается в выводе:
curl обычно отображает индикатор хода выполнения операции, указывая количество переданных данных, скорость передачи, оставшееся время и т. д.
curl по умолчанию отображает эти данные на терминал, поэтому, если вы вызываете curl для выполнения операции, и он собирается писать выходные данные в терминал, он отключает индикатор прогресса, так как в противном случае он может смешать индикатор прогресса и данные.
Если вам нужен индикатор выполнения для запросов HTTP POST или PUT, вам нужно перенаправить вывод ответа в файл, используя shell redirect (>), -o [file] или аналоги.
Это не так для загрузки по FTP, так как эта операция не выдает данные на терминал.
Q2. Как заставить curl использовать то же имя для скачиваемого файла?
В предыдущем примере вы видите, что мы должны были явно указать имя загруженного файла. Однако, если вы хотите, вы можете заставить curl использовать имя загружаемого файла в качестве локального имени файла. Это можно сделать с помощью параметра командной строки -O.
Так что в этом случае был создан файл с именем ‘ubuntu-18.04-desktop-amd64.iso.torrent’.
Q3. Как скачать несколько файлов, используя curl?
Это тоже не сложно — просто передайте URL следующим образом:
Вот эта команда в действии:
Таким образом, вы можете видеть процесс загрузки для обоих URL-адресов.
Q4. Как решить проблему с «Moved»?
Иногда, когда вы передаете URL команде curl, вы получаете сообщения об ошибках типа «Moved» или «Moved Permanently». Это обычно происходит, когда входной URL перенаправляет на какой-либо другой URL. Например, вы открываете веб-сайт, скажем oneplus.com, и он перенаправляет вас на URL-адрес для вашей страны (например, oneplus.in), поэтому вы получаете сообщение об ошибке, подобное следующему:
Если вы хотите, чтобы curl следовал за перенаправлением, используйте параметр командной строки -L.
Q5. Как возобновить загрузку с точки прерывания?
Иногда загрузка прерывается. Поэтому, естественно, чтобы сэкономить время и данные, при повторной попытке вы захотите, чтобы загрузка началась с того момента, на котором она была прервана. Curl позволяет вам сделать это, используя опцию командной строки -C.
На следующем снимке экрана показана команда curl, возобновляющая загрузку после ее прерывания.
Заключение
Итак, вы можете видеть, что команда curl — полезная утилита, если вы хотите загружать файлы в командной строке. Мы показали только основы, так как она предлагает намного больше возможностей. Как только вы закончите практиковать параметры командной строки, обсуждаемые в этом руководстве, вы можете перейти на страницу руководства curl, чтобы узнать больше о ней.
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
15 примеров CURL в Linux
4 минуты чтения
В середине 1990-х годов, когда Интернет еще только начинал развиваться, шведский программист по имени Даниэль Стенберг начал проект, который в конечном итоге превратился в то, что мы сегодня знаем, как Curl. Первоначально он стремился разработать бота, который бы периодически загружал курсы валют с веб-страницы и предоставлял пользователям IRC эквиваленты шведских крон в долларах США. Проект процветал, добавлялись новые протоколы и функции, и в конце концов мы получили тот функционал, который имеем сейчас.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Посмотреть версию curl
Опции -V или —version будут возвращать не только версию, но также поддерживаемые протоколы и функции в текущей версии.
Скачать файл
Если вы хотите загрузить файл, вы можете использовать curl с опциями -O или -o. Первый сохранит файл в текущем рабочем каталоге с тем же именем, что и в удаленном местоположении, тогда как второй позволяет вам указать другое имя файла и/или местоположение.
Возобновить прерванную загрузку
Если загрузка по какой-либо причине была прервана (например, с помощью Ctrl + c), вы можете возобновить ее очень легко. Использование -C — (тире C, пробел, тире) указывает curl возобновить загрузку с того места, где она остановилась.
Скачать несколько файлов
С помощью следующей команды вы сразу загрузите info.html и about.html с http://merionet.ru и http://wiki.merionet.ru соответственно.
Скачать URL из файла
Если вы комбинируете curl с xargs, вы можете загружать файлы из списка URL-адресов в файле.
Использовать прокси с аутентификацией или без нее
Если вы находитесь за прокси-сервером, прослушивающим порт 8080 на proxy.yourdomain.com, сделайте это:
где вы можете пропустить -U user: пароль, если ваш прокси не требует аутентификации.
Заголовки запроса HTTP
Заголовки HTTP позволяют удаленному веб-серверу отправлять дополнительную информацию о себе вместе с фактическим запросом. Это предоставляет клиенту подробную информацию о том, как обрабатывается запрос.
Чтобы запросить заголовки HTTP с сайта, выполните:
Эта информация также доступна в инструментах разработчика вашего браузера.
Сделать запрос POST с параметрами
Следующая команда отправит параметры firstName и lastName вместе с соответствующими значениями на https://merionet.ru/info.php.
Вы можете использовать этот совет для имитации поведения обычной формы HTML.
Загрузка файлов с FTP-сервера с аутентификацией или без нее
Если удаленный FTP-сервер ожидает подключения по адресу ftp://yourftpserver, следующая команда загрузит yourfile.tar.gz в текущий рабочий каталог.
где вы можете пропустить -u username: password, если FTP-сервер разрешает анонимный вход.
Загрузить файлы на FTP-сервер с аутентификацией или без
Чтобы загрузить локальный файл mylocalfile.tar.gz в ftp://yourftpserver с помощью curl, выполните:
Указание пользовательского агента
Пользовательский агент является частью информации, которая отправляется вместе с HTTP-запросом. Это указывает, какой браузер клиент использовал, чтобы сделать запрос.
Хранение Cookies
Хотите узнать, какие файлы cookie загружаются на ваш компьютер, когда вы заходите на https://www.cnn.com? Используйте следующую команду, чтобы сохранить их в cnncookies.txt. Затем вы можете использовать команду cat для просмотра файла.
Отправить файлы cookie сайта
Вы можете использовать файлы cookie, полученные в последнем совете, при последующих запросах к тому же сайту.
Изменить разрешение имени
Если вы веб-разработчик и хотите протестировать локальную версию merionet.ru, прежде чем запускать ее в живую версию, вы можете настроить разрешение curl http://www.merionet.ru для своего локального хоста следующим образом:
Таким образом, запрос к http://www.merionet.ru скажет curl запрашивать сайт у localhost вместо использования DNS или файла /etc /hosts.
Ограничить скорость загрузки
Чтобы предотвратить потерю пропускной способности, вы можете ограничить скорость загрузки до 100 КБ/с следующим образом.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник