Команда Curl в Unix/Linux
Curl утилита для скачивания и загрузки файлов. В данной теме «Команда Curl в Unix/Linux» я расскажу как можно ее использовать на готовых примерах.
Команды Curl для загрузки файлов
1. Скачать и сохранить файл.
Чтобы просто скачать файл с помощью Curl использование следующий синтаксис что ниже. Опция «-О» используется для сохранения файла на локальной системе с таким же именем что и на удаленной системе.
# curl -O http://linux-notes.org/test_file.zip
2. Скачать и сохранить файл с другим именем.
Если вы хотите сохранить файл с другим именем на локальной системе, используйте параметр «-o» с новым именем файла.
# curl -o http://linux-notes.org/test_file.zip
3. Скачать и сохранить несколько файлов одновременно.
Curl также дает возможность загружать несколько файлов одновременно. Все файлы будут сохраняться с оригинальными именами.
# curl -O http://linux-notes.org/test_file1.zip -O http://linux-notes.org/test_file2.zip
4. Скачать и сохранить файл с авторизированного сервера.
В данном случае файлы будут скачиваться с сервера с аутентификацией HTTP или FTP. Вы можете передать учетные данные для входа, используя параметр «-u».
# curl -u your_auth_user:your_auth_PW -O http://linux-notes.org/test_file.zip # curl -u your_auth_ftpuser:your_auth_ftpPW -O http://linux-notes.org/test_file.zip
5. Скачать и сохранить файл используя прокси сервер
Если файл-сервер доступен только через прокси-сервер или вы хотите использовать прокси-сервер для загрузки файлов, использование опцию «-x» с последующим адрес прокси-сервера и портом для загрузки файла через прокси-сервер.
$ curl -x this_your_proxy_server:port -O http://linux-notes.org/test_file.zip
Команды Curl для получения заголовков
Например, можно получить заголовки от сервера следующим образом:
# curl -I http://linux-notes.org/index.php
Для получения статуса от сервера используйте:
$ curl -Is http://linux-notes.org/ | head -1
или
$ curl -Is http://linux-notes.org/ | head -1 |cut -d" " -f2
А так же:
$ curl -sL -w "%{http_code}" linux-notes.org:80 -o /dev/null
или
$ curl -Is http://linux-notes.org/ | head -1 |awk '{ print $2;}'
Так же, можно проверить https УРЛ:
$ curl --insecure --silent --show-error --connect-timeout 1 -I https://linux-notes.org HTTP/1.1 301 Moved Permanently Server: nginx Date: Sat, 18 Mar 2017 22:14:17 GMT Content-Type: text/html Content-Length: 178 Connection: keep-alive Location: http://linux-notes.org/ Cache-Control: max-age=86400, public, must-revalidate, proxy-revalidate Strict-Transport-Security: max-age=63072000; includeSubdomains; preload X-Frame-Options: DENY X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Public-Key-Pins: pin-sha256="IFcSE6waV/oqKTxdUwTtx1oUgbXCQ+oWGL/osCF3fnQ="; pin-sha256="47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="; max-age=2592000; includeSubDomains Alternative-Protocol: 443:npn-spdy/3.1 Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://themes.googleusercontent.com https://fonts.gstatic.com http://fonts.googleapis.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none' Content-Security-Policy-Report-Only: default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report
Как-то так.
Можно по URL, узнать какой веб-сервер используется:
$ curl -IL linux-notes.org 2>/dev/null | grep Server
Иногда, полезно задействовать ограничение с переадресацией, например — ограничим до 10 переадресаций:
$ curl --location --max-redirs 10 http://linux-notes.org/.well-known/acme-challenge/index.php
ИЛИ:
$ curl --head --silent --location --max-redirs 10 http://linux-notes.org/.well-known/acme-challenge | grep ^HTTP
Выполнить bash скрипт из URL
Пример один:
$ bash < <(curl -s http://linux-notes.org/myscript.sh)
Идем дальше, следующий пример:
$ curl -s http://linux-notes.org/myscript.sh | bash -s --
Или, если есть ниобходимось задать входные данные:
$ curl -s http://linux-notes.org/myscript.sh | bash -s arg1 arg2
Вот еще один интересный пример:
$ source <(curl -s http://linux-notes.org.com/myscript.sh)
Самый простой вариант:
$ curl -s -L http://linux-notes.org | bash
Как-то так.
Опции для Curl
Для подробной информации, используйте:
$ curl -h
С помощью данной утилиты можно не только скачивать файлы, я попозже ( со временем) дополню данную статью. А на этом тема «Команда Curl в Unix/Linux» завершена.
Если нужен GUI, то uGet http://ugetdm.com/
По своей сути uGet является графическим фронтендом для curl