[[: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~~