Содержание

На главную, Инструментарий


сURL

Основные приемы работы с утилитой 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.

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'ов с серверов.

ftp_download.cmd
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

На главную, Инструментарий