[[:start|На главную]], [[:instruments:start|Инструментарий]] ---- ====== сURL ====== {{tag>инструментарий}} ===== Основные приемы работы с утилитой CURL ===== сURL очень полезный инструмент командной строки для передачи данных на или от сервера. Поддерживает массу протоколов, таких как FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTP, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS, и TFTP. {{:instruments:curl:curl.zip|скачать cURL}}, 1.2 MB cURL может быть использован самыми различными и интересными способами. С помощью этого инструмента вы можете скачать, загрузить файлы и управлять ими, проверить свой адрес электронной почты, или даже обновлять свой статус на некоторых веб – сайтах ==== Проверить URL ==== Одним из наиболее распространенных и простейших применений cURL указать саму команду, а затем URL, который нужно проверить: curl https://domain.ru В ответ будет загружена HTML страница ==== Сохранить вывод URL в файл ==== Вывод команды cURL можно сохранить в файл добавив ключ -o: curl>curl -o dload.html http://domain.ru % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 233 100 233 0 0 80 0 0:00:02 0:00:02 --:--:-- 1354 В этом примере, вывод будет сохранен в файл с именем ‘dload.html’ в текущем рабочем каталоге. ==== Загрузка файлов с помощью Curl ==== С помощью команды cURL можно скачивать файлы, добавив ключ -o. Он используется для сохранения файлов на локальном сервере с теми же именами, как и на удаленном сервере: curl -o https://domain.ru/file.zip В этом примере архив ‘file.zip’ будет загружен в текущий рабочий каталог. Вы также можете загрузить файл с другим именем, добавив новое имя файла к опции -o: curl -o archive.zip https://domain.ru/file.zip Таким образом, архив ‘file.zip’ будет загружен и сохранен как ‘Archive.zip’. cURL может быть также использован для загрузки нескольких файлов одновременно, как показано в приведенном ниже примере curl -O https://domain.ru/file.zip -O https://domain.com/file2.zip Curl также можно использовать для загрузки файлов надежно через SSH с помощью следующей команды: curl -u user sftp://server.domain.ru/path/to/file Обратите внимание, что вы должны использовать полный путь к файлу, который требуется загрузить. ==== Взять информацию из заголовка HTTP веб-сайта ==== Можно легко получить информацию из HTTP заголовка страницы любого веб-сайта, добавив опцию -I (‘i’) к cURL. curl -I http://domain.ru HTTP/1.1 200 OK Date: Sun, 16 Oct 2016 23:37:15 GMT Server: Apache/2.4.23 (Unix) X-Powered-By: PHP/5.6.24 Connection: close Content-Type: text/html; charset=UTF-8 ==== Доступ к FTP-серверу ==== Для доступа к FTP серверу с помощью утилиты Curl можно воспользоваться командой: curl ftp://ftp.domain.ru --user username:password Curl будет подключаться к FTP-серверу и выведет список всех файлов и каталогов в домашнем каталоге пользователя Можно скачать файл с FTP сервера curl ftp://ftp.domain.ru/file.zip --user username:password и загрузить файл на сервер FTP curl -T file.zip ftp://ftp.domain.ru/ --user username:password Для получения справки по доступным ключам Curl нужно запустить curl --help ==== Примеры ==== * Пример вызова утилиты curl из командной строки для скачивания файла с ftp с последующим удалением на сервере: curl.exe "ftp://server.url/folder/file.txt" --user login:password --remote-time -o "./local/folder/file.txt" -Q "-DELE file.txt" * Просто скачивание с ftp: curl.exe "ftp://server.url/folder/file.txt" --user login:password --remote-time -o "./local/folder/file.txt" * Загрузка файла на ftp: curl.exe -T "./local/folder/file.txt" "ftp://server.url/folder/file.txt" --user login:password * Ну и, напоследок, скрипт (командный файл Windows) который выкачивает из заданной папки на Ftp все подпапки (1 вложение) с файлами в них. Подобный скрипт я использую для скачивания backup'ов с серверов. rem Этот скрипт скачивает с ftp сервера FTP_URL файлы со всех папок FTP_URL/folder rem Скрипт рассчитан на то, что в папке FTP_URL нет файлов, а только подпапки. После скачивания, файлы удаляются с сервера set FTP_URL=ftp://server.url set FTP_FOLDER=backup set AUTH_DATA=login:password set CURL=".\curl\curl.exe" set CURL_ERR=curl_err.log for /F "usebackq " %%i in (`%CURL% %FTP_URL%/%FTP_FOLDER%/ -l --user %AUTH_DATA%`) DO CALL :download %%i set AUTH_DATA="" rem pause exit :download echo %1 if not exist .\%1 md %1 %CURL% %FTP_URL%/%FTP_FOLDER%/%1/ -l --user %AUTH_DATA% -o files.txt rem Эта команда копирует файлы с сервера rem for /F "usebackq delims=" %%i in (files.txt) DO %CURL% "%FTP_URL%/%FTP_FOLDER%/%1/%%i" --user %AUTH_DATA% --remote-time -o ./%1/%%i rem Эта команда копирует файлы с сервера и удаляет на сервере после успешного копиования for /F "usebackq delims=" %%i in (files.txt) DO %CURL% "%FTP_URL%/%FTP_FOLDER%/%1/%%i" --user %AUTH_DATA% --remote-time -o ./%1/%%i -Q "-DELE %%i" del files.txt exit /b ---- [[:start|На главную]], [[:instruments:start|Инструментарий]] ~~DISCUSSION~~