Як використовувати команду Curl в Linux

Розширений посібник із поясненням використання команди curl для отримання веб-сторінок і завантаження файлів прямо з терміналу

The завивати command — ще одна цікава утиліта командного рядка, яку може запропонувати вам Linux. завивати Команда дозволяє користувачеві отримувати файли з сервера.

завивати є популярним вибором розробників додатків і частих користувачів Linux через підтримку низки протоколів, таких як RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S тощо.

завивати Команда робить набагато більше, ніж просто отримання веб-сторінок за вас. Знання опцій, доступних для цієї команди, робить її більш універсальною для вашого використання. Давайте зануримося в підручник, щоб добре зрозуміти використання завивати команду, використовуючи кілька коротких прикладів.

Установка

Перед використанням завивати команди, перевірте, чи вона вже встановлена ​​у вашій системі. Використовуйте команду curl --версія щоб перевірити чи завивати встановлено.

У разі якщо завивати не встановлено, виконайте наведені нижче дії.

У системах на базі Ubuntu та Debian, використовувати:

sudo apt-отримати оновлення
sudo apt-get install curl

У дистрибутивах RHEL, CentOs і Fedora, використовувати:

sudo yum встановити curl

Тепер використовуйте curl --версія команду, щоб переконатися, що вона правильно встановлена.

curl --версія

Вихід:

curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) ng02/ 0 librtmp/2.3 Дата випуску: 24.01.2018 Протоколи: dict файл ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp telnet tftp Ідентифікатор: telnet tftp Ідентифікатор: AsynchNTB6NTS LAPG_IP. libz TLS-SRP HTTP2 UnixSockets HTTPS-проксі PSL gaurav@ubuntu:~$ 

Тепер ми готові до використання завивати команда.

Опції, доступні за допомогою команди CURL

Давайте спочатку поглянемо на деякі з відомих опцій, доступних з завивати команда.

ВаріантОпис
-uщоб завантажити файли з FTP-сервера
-Cщоб відновити перерване завантаження
щоб зберегти результат завивати команду із попередньо визначеною назвою файлу
щоб отримати HTTP-заголовки визначеної URL-адреси
щоб зберегти результат завивати команду з оригінальною назвою файлу
--libcurlдля виведення вихідного коду C, який використовує libcurl за вказаний варіант
-xщоб використовувати проксі-сервер для доступу до URL-адреси
-#щоб відобразити панель перебігу для відображення статусу завантаження

Отримання веб-сторінки за допомогою CURL

The завивати команда, якщо використовується без будь-яких параметрів, отримує вміст URL-адреси, зазначеної в команді.

Синтаксис:

curl [URL]

приклад:

завивати //все.як

Вихід:

gaurav@ubuntu:~$ curl //allthings.how html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads ]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;- moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch -action:pan-y;touch-action:pan-y}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not (.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-webview>body{overflow-x :hidden!important;overflow-y:visible!important;min-height:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important ;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;over flow-y:auto!important;position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0!important;display:block!important} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling: touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px твердий прозорий!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox -element{visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram {padding:54px 0px 0px!important;background-color:#fff}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[підписки -dialog],body:not(.i-amphtml-s ubs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[update]{display :none}.i-amphtml-jank-meter{position:fixed;background-color:rgba(232,72,95,0.5);bottom:0;right:0;color:#fff;font-size:16px; z-index:1000;padding:5px}amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load -more] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px !important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[автономний]{background- color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtm l-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([відстань]):not([active]){transform:translateY(1000vh)!important }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px твердий rgba(0,0,0,0.33) }.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden} amp-script[nodom]{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden} 

Тут вміст веб-сторінки завантажується безпосередньо на ваш термінал як вихідний код.

Ви можете використовувати параметри і з завивати команда для збереження цього вмісту у файлі.

Коли Якщо використовується параметр, вміст URL-адреси зберігається у вашому поточному каталозі з визначеною користувачем іменем файлу.

Синтаксис:

curl -o [userdefined_filename] [URL]

приклад:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Загальний % отриманих % Xferd Середня швидкість Час Час Поточний Завантаження Завантаження Загальна витрачена швидкість 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

У цьому прикладі вміст URL-адреси «allthings.how» збережено як файл HTML з іменем ath.html у моєму поточному робочому каталозі. Відкривши цей файл HTML, я буду переспрямований на збережену веб-сторінку.

Завантаження файлів за допомогою команди CURL

Використання Параметр за допомогою команди curl також зберігає вміст або веб-сторінку або завантажуваний пакет як файл, але зберігає цей файл під його оригінальною назвою.

Давайте подивимося на це на прикладі:

приклад:

Тут я використав завивати команда з можливість завантажити пакет Ubuntu під назвою «cherrytree_0.37.6-1.1_all.deb‘ зі сховища пакетів Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Загальний % отриманих % Xferd Середня швидкість Час Час Час Поточне завантаження Завантаження Загальна витрачена швидкість 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Вихід:

trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$

Отже, пакет тепер завантажено та збережено в поточному робочому каталозі (CWD) з його оригінальною назвою.

Відображення індикатора виконання під час завантаження файлу

Під час використання доступна ще одна естетична модифікація завивати команда для завантаження файлу. Ви можете переглянути хід завантаження файлу у вигляді панелі перебігу на свій термінал. Вам просто потрібно додати -# опцію за допомогою команди для завантаження файлу.

Давайте подивимося на приклад цього налаштування.

Синтаксис:

curl -# -O [URL]

приклад:

gaurav@ubuntu:~/workspace$ curl -# -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######### ################################################### ################################################### ################################### 100,0% gaurav@ubuntu:~/workspace$ 

Вихід:

gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$ 

У цьому виводі ви можете помітити, що я завантажив пакет з назвою «emacs-defaults_47.0.tar.xz‘ у моєму CWD, і під час завантаження в терміналі відображається індикатор виконання.

Відновлення перерваного завантаження в CURL

Багато разів може виникнути ситуація, коли вам доведеться завантажувати файли більшого розміру. Іноді через деякі причини, як-от збій живлення або збій мережі, завантаження може припинитися в середині процесу без завантаження повного файлу. Навіть якщо натиснути Ctrl+C в терміналі процес припиняється.

The завивати команду при використанні з -C опція відновлює перерване завантаження.

Синтаксис:

curl -C - -O [URL]

приклад:

На цій ілюстрації я спробував завантажити ISO-образ Ubuntu 20.04 з веб-сайту Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.160025072.1184373179.160025072.160025072.160025072.16002509250%140407090%250920%14040920%250925 Час Час Час Поточний Завантаження Завантаження Загальна витрачена Швидкість 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Тут я навмисно перервав процес завантаження Ctrl+C.

Зараз я скористаюся -C варіант з завивати команду для відновлення перерваного завантаження з того самого вихідного веб-сайту.

Вихід:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1602-175 Передача** від 1602-175 позиція байта 1851392 % Усього % отриманого % Xferd Середня швидкість Час Час Час Поточний Завантаження Завантаження Загальна витрачена швидкість лівої 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:28

Завантаження було піднято з того місця, де воно було перервано.

Завантаження файлів із FTP-сервера за допомогою CURL

Це досить легко з завивати команда для завантаження файлу з FTP-сервера за допомогою -u варіант. Ви повинні ввести ім’я користувача та пароль у команду перед введенням URL-адреси.

Синтаксис:

curl -u [ім'я користувача]:[пароль] [URL]

Для ілюстрації я буду використовувати загальнодоступний FTP в Інтернеті.

приклад:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Загальний % одержаного % Xfer Швидкість Час Час Час Поточний Завантаження Завантаження Загальна витрачена швидкість залишилася 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Тут я завантажив файл під назвою «16-20-20-16-0-0.csv’ з цього ftp-сервера і зберіг його з оригінальною назвою в моєму CWD. Я перевірю завантажений файл за допомогою ls команда.

gaurav@ubuntu:~/workspace$ ls -al всього 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 вересня 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 16 вересня 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16 вересня 16:15 16 вересня 20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16 вересня 11:45 ath.html gaurav@ubuntu:~/workspace$

Завантаження кількох файлів разом за допомогою CURL

Завантаження кількох файлів одночасно за допомогою завивати команда - дуже просте завдання. Ви просто використовуєте варіант з завивати команда, подібна тому, як ми виконали у вищезгаданих блоках.

Синтаксис:

curl -O [URL-1] -O [URL-2] -O[URL-n]

приклад:

gaurav@ubuntu:~/workspace$ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com/ubuntu/pool/main/a/apache2/apache2_2.4.29.orig.tar.gz % Загальний % отриманих % Xferd Середня швидкість Час Час Поточний Завантаження Завантаження Загальна витрачена швидкість 100 63500 100 63500 4:0 0 50 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $ 

У цьому прикладі я завантажив два різних пакунка зі сховища Ubuntu.

Вихід:

gaurav@ubuntu:~/workspace$ ls -al всього 9596 drwxrwxr-x 3 gaurav gaurav 4096 16 вересня 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 16 вересня 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16 вересня 16:15 16 вересня 20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 16 вересня 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 16 вересня 16:29 apache.29_. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16 вересня 11:45 ath.html gaurav@ubuntu:~/workspace$ 

Два пакети завантажуються одночасно за допомогою команди curl.

Отримання HTTP-заголовків URL-адреси за допомогою CURL

Поля заголовків HTTP будь-якої URL-адреси містять корисну інформацію, таку як агент користувача, тип вмісту, кодування тощо. Ці файли заголовків також містять інформацію про об’єкт, надісланий у тілі повідомлення. Детальну інформацію про запит і відповідь також можна отримати з цих HTTP-заголовків.

Ви можете використовувати завивати команда з можливість отримати ці HTTP-заголовки URL-адреси.

Синтаксис:

curl -I [URL]

приклад:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Тип вмісту: text/html; charset=ISO-8859-1 P3P: CP="Це не політика P3P! Додаткову інформацію див. на g.co/p3phelp." Дата: середа, 16 вересня 2020, 11:17:00 GMT Сервер: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Термін дії: Середа, 16 вересня 2020, 11:17:00 GMT Cache- Контроль: приватний Set-Cookie: 1P_JAR=2020-09-16-11; expires=Пт, 16 жовтня 2020 11:17:00 GMT; шлях=/; domain=.google.com; Безпечний Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expires=Чт, 18 березня 2021, 11:17:00 GMT; шлях=/; domain=.google.com; HttpЛише gaurav@ubuntu:~/workspace$

У цьому прикладі я отримав HTTP-заголовки «www.firefox.com‘.

Отримання вихідного коду C за допомогою CURL

Використання завивати команда з --libcurl параметр може отримати вихідний код C. Це не має значної користі для неспеціалістів, але може виявитися дуже корисним для системних програмістів, аналітиків безпеки та розробників додатків.

Синтаксис:

curl [URL] > ім'я файлу --libcurl [назва_кодового_файлу]

приклад:

У цьому прикладі я отримав вміст URL-адреси все.як і зберіг його у файлі з іменем gy_ath.html. Вихідний код C окремо зберігається в файлі джерело.c файл.

curl //www.allthings.how > gy_ath.html --libcurl source.c 

Вихід:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Загальний % отриманих % Xferd Середня швидкість Час Час Час Поточний Завантаження Завантаження Загальна витрачена швидкість 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Тепер перевіримо завантажені файли.

gaurav@ubuntu:~/workspace$ ls -al всього 404 drwxrwxr-x 3 gaurav gaurav 4096 16 вересня 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 16 вересня 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 16 вересня 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 16 вересня 17:13 source.c gaurav@ubuntu:~/workspace$

The джерело.c файл містить вихідний код. Це можна відобразити на терміналі за допомогою кіт команда. Я помістив кілька рядків з виводу в наведений нижче блок.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Зразок коду, згенерованого інструментом командного рядка curl ********** * Усі параметри curl_easy_setopt() задокументовано за адресою: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ********************************* ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; CURL *hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt(hnd, CURLOPT_URL, "//www.allthings.how"); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.58.0"); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50 л);

Використання проксі-сервера в CURL для доступу до URL-адреси

Як обговорювалося у вступі, завивати Команда підтримує широкий спектр протоколів, таких як FTP, SMTP, HTTPS, SOCKS тощо. Іноді використання проксі-сервера для передачі файлів стає важливим, якщо ви хочете підвищити швидкість передачі, а також захистити свою особистість. завивати Команду можна легко використовувати для передачі файлів через проксі-сервер, додавши файл -x варіант до нього.

приклад:

curl -x [адреса_проксі]:[порт] [URL]

У наведеному вище прикладі я припустив, що ваш проксі-сервер не потребує автентифікації. Якщо проксі-сервер вимагає аутентифікації для початку передачі, ви можете скористатися наступною командою.

curl -u [ім'я користувача]:[пароль] -x [адреса_проксі]:[порт] [URL]

Використовуючи цей простий метод, ми можемо передавати файли через проксі-сервер з опцією -x використовується з завивати команда.

Висновок

У цьому короткому посібнику ми дізналися, як завивати Команда виявляється корисною при завантаженні вмісту безпосередньо з терміналу. Ми також дізналися про різні параметри, доступні за допомогою цієї команди для різних завдань.

Категорія: Linux