Home / Sistem / Linux / Linux curl komandasından necə istifadə etmək olar?
curl-cover-picture

Linux curl komandasından necə istifadə etmək olar?

Linux ƏS-nin server üçün olan versiyalarından istifadə edənlər çox güman ki, curl komandası ilə qarşılaşıblar. Bu alət fayl endirmə və serverə yükləmə də daxil olmaqla, bir çox imkanlara malikdir və 20-dən çox protokolu dəstəkləyir.

curl veb saytlarla və ya API ilə işləmək, sorğular göndərmək və terminalda əks etdirmək və ya fayla yazmaqla cavablar almaq üçün ideal komandadır. Bəzən isə bu komanda əldə edilmiş məlumatları emal üçün digər funksiyalara ötürmək məqsədi ilə mürəkkəb skriptin tərkib hissəsi ola bilər.

Bu komanda serverdən faylları yükləməklə yanaşı, saytın bir qisminin kompüterə yüklənməsi üçün də istifadə edilə bilər. Düzdür, bunun üçün digər bir komanda – wget-dən istifadə etmək daha məqsədəuyğundur, amma curl-da vəzifəsinin öhdəsindən məharətlə gələ bilir.

Məqalənin sonunda bu iki aləti müqayisə edəcəyik, hələlik isə curl-dan hansı məqsədlər üçün istifadə etmək olduğuna baxaq.

Fayl endirmək

curl-a verilə biləcək ən sadə komanda sayt və ya fayl endirməkdir. Varsayılan kimi bu komanda http protokolunu istifadə edir, lakin istənilən protokolu qeyd edə bilərik. Hər hansı saytın qaynaq koduna baxmaq üçün aşağıdakı komandanı daxil etmək kifayətdir:

$ curl http://netadmin.az

linux-curl-get-site

Cavab olaraq bu komdanda veb səhifələrin yaradılması üçün istifadə olunan HTML və digər kodlar qaytarır, lakin bunun bizə faydası azdır (əgər serverdə internet olub olmadığını yoxlamırsınızsa). Gəlin komdandanı elə dəyişək ki, qaytarılan cavab HTML fayla yazılsın. Bu bizə daha sonra həmin faylı istənilən brauzerdə açmağa imkan verəcək.

$ curl www.likegeeks.com --output likegeeks.html

Artıq bu faylı istənilən kod redaktorunda və ya brauzerdə açmaq olar.

linux-crul-export-html

İnternetdən hər hansı faylı yükləmək üçün də komanda eyni qalır, sadəcə, yuxarıdakı misalda olduğu kimi –ouput opsiyasını əlavə edirik, əks halda komanda cavab olaraq faylın binar (0 və 1 dən ibarət) kodunu göndərəcək və əməliyyat uğursuz olacaq. Aşağıdakı şəkildə 500 kb-lıq Word faylını yükləmə cəhdi əks olunub.

linux-curl-download-file

Fayl yüklənməyə başlayacaq və monitorda endirmənin hazırki vəziyyətini görəcəyik. Endirmə bitdikdən sonra fayl komandada göstərilən kataloqda yerləşəcək, kataloq göstərilmədiyi təqdirdə isə hazırki direktoriyada yerləşəcək.

Fikir verdinizsə, komandaya əlavə -L açarı ötürmüşük. Fayl yüklənən zaman bu açarı göstərmək vacibdir, lakin təyinatı haqqında bir az sonra danışacağıq.

Yönləndirmənin izlənməsi

Komandanın icrası zamanı heç bir cavab qayıtmayıbsa, bu həmin saytda yönləndirmə (redirect) olması anlamına gəlir, lakin curl bunu anlamır. –L açarı məhz bu hallarda istifadə oluna bilər.

Yeri gəlmişkən, material hazırlayarkən əksər hallarda –L açarının istifadə olunduğuna fikir verdik. Bu səbəbdən bu açarı nəzərdə saxlamağınız məsləhətdir.

Endirməni idarə etmək

Əgər faylı endirən zaman nəsə problem yaranıbsa və ya iri həcmli fayllar yükləyirsinizsə, amma hər hansı səbəbdən bunu bir dəfəyə etmək alınmırsa, Linux curl endirməni saxlayıb, daha sonra davam etmək imkanı da verir.

Prosesi saxlmaq üçün terminalda az qala bütün prosesləri dayandırmaq üçün istifadə olunan Ctrl+C komandası daxil edilməlidir.

curl-pause-downloading

Şəkildə göründüyü kimi, endirmə prosesi başlayıb, lakin onu dayandırmışıq. Daha sonra endirməni davam etdirmək üçün aşağıdakı komandanı daxil etmək kifayətdir.

$ curl -C - example.com/some-file.zip --output MyFile.zip

-C açarı ilə curl-a endirməni davam etməyi deyirik, lakin açardan sonrakı defis işarəsinə fikir verin. Bu defis komandaya artıq yüklənmiş hissəni yoxlamaq və endirməni yarım qalan yerdən davam etməli olduğunu göstərir.

curl-resume-downloading

Endirmə qaldığı yerdən davam edir və uğurla yekunlaşır.

Komandanın icra müddətini təyin etmə

curl istifadəçiyə komandanın icrasının dayanma vaxtını təyin etməyə imkan verir. Bəzən bu bəzi əməliyyatların qapalı dövrəyə düşüb sistemi dayandırmasının qarşısını ala bilər. Bunun üçün curl komandasına –m açarı ilə əməliyyatın dayandırılma vaxtını saniyələrlə göstərməklə ötürə bilərik:

$ curl -m 60 example.com

Həmçinin komandaya bağlantının maksimum müddətini də göstərmək olar ki, bu da işlək olmayan serverə sonsuz sorğular göndərməyin qarşısını alır. Bu açara arqument kimi saniyələrlə göstərilən dəyər ötürülür, komanda isə aşağıdakı kimi yazılır:

$ curl --connect-timeout 60 example.com

Login və şifrə ötürmək

Linux curl aləti bağlantıda istifadə olunacaq login və şifrəni də ötürmək imkanı verir. Adətən bu FTP serverinə qoşulma zamanı lazım olur. Bunun üçün –u açarı istifadə edilir:

$ curl -u username:password ftp://example.com

Bu parameter istənilən protokolla istifadə edilə bilər, lakin FTP fayl ötürmək üçün ən çox istifadə olunan protokoldur.

Məsələn, aşağıdakı şəkildə göstərilən faylı yükləmək üçün eyni komandaya faylın dəqiq yeri göstərilməlidir:

$ curl -u username:password ftp://example.com/readme.txt

Bağlantının proksi üzərindən qurulması

curl resursa proksi server üzərindən bağlantı qurmaq kimi imkana da malikdir. Varsayılan olaraq curl HTTP proksi istifadə edir, amma digər proksi növlərindən də yararlanmaq olar. Trafikin proksi server üzərindən getməsini təmin etmək üçün –x açarından istifadə edilir.

$ curl -x 192.168.1.1:8080 http://example.com

Bu komanda curl-a resursa müraciət etməzdən öncə 8080 portu ilə 192.168.1.1 ünvanına qoşulmalı olduğunu deyir.

Proksi serverdən digər protokollarla işləyərkən də faydalanmaq olar. Məsələn, aşağıdakı komanda ftp serverdən faylı proksi üzərindən yükləmək üçün istifadə olunur.

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

Linux curl bir çox proksi növlərini dəstəkləyir, lakin bir təlimatda onların hamısını əhatə etmək mümkün deyil. Tunelləmə, SOCKS proksi, autenifikasiya və s. haqqında ətrfalı man curl yazmaqla curl komandasının təlimatında oxuya bilərsiniz.

Qeyd: Linux-da man istənilən komanda üzrə ətraflı təlimatı əks etdirir. Təsadüfi deyil ki, man sözü ingiliscə manual sözünün qısa formasıdır.

Böyük faylları hissə-hissə endirmək

Bir az əvvəl fayl endirməni saxlayıb və yenidən başlatma imkanı haqqında danışmışdıq. Bəs əgər iri həcmli faylları hissə-hissə endirmək lazımdırsa? curl bizə bu imkanı da verir. Bunun üçün –range parametrindən istifadə olunur, arqument kimi isə yüklənəcək hissənin gəcmi baytla göstərilir.

Məsələn, Linux Ubuntu ƏS-nin son versiyasını 100 meqabaytlıq hissələrlər yükləmək üçün aşağıdakı komandanı yazmaq lazımdır:


$ curl --range 0-99999999 http://releases.ubuntu.com/groovy/ubuntu-20.10-desktop-amd64.iso ubuntu-part1

İkinci komdanda da isə endirməni başlamaq istədiyimiz baytı yazırıq və fayl tam yüklənənədək bu qaydada davam edirik.

$ curl --range 100000000-199999999 http://releases.ubuntu.com/groovy/ubuntu-20.10-desktop-amd64.iso ubuntu-part2

Sonda isə yüklənən hissələri bir yerə yığırıq.

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

Аутентификация по сертификату

Bəzi saytlara daxil olmaq üçün sertifikatla autentifikasiya tələb olunur. curl-da bu imkan da var. Sadəcə -cert parametrinə sertifikatın yerini göstəririk.

$ curl --cert path/to/cert.crt:password ftp://example.com

curl çox sayda sertifikat formatlarını dəstəkləyir və onlarla işləmək üçün -cacert, –cert-status, -cert-type və s. kimi parametrlər var. Bütün parametrlər haqqında məlumatı yenə də man komandası ilə ala bilərsiniz.

Səssiz rejim

curl ilə işləyən zaman müxtəlif səhvlər barədə məlumat verən ismarışlar sizi qıcıqlandırırsa, bu alətin onun üçün də həlli var. curl komandasını -s açarı ilə işə salmaq kifayətdir. Lakin səhvlərə sonradan baxmaq üçün, qayıdan cavabları başqa bir fayla yönləndirmək lazımdır. Bunun üçün isə -O açarı istifadə olunur. Bu zaman fayl hazırda işlədiyiniz kataloqda yaranacaq.

$ curl -s -O http://example.com

-O açarında alternativ kimi –output parametrindən istifadə etmək olar, bu zaman yekun faylın saxlanacaq yerini də göstərmək mümkündür.

$ curl -s http://example.com --output index.html

Başlıqları aldə etmək

Linux curl istənilən saytın başlıqlarını əldə etməyə imkan verir. Bunun üçün komandanı -I açarı ilə işə salmaq lazımdır.

Qeyd: Hər bir sayt müraciətə cavab olaraq müxtəlif başlıqlar qaytarır. Bu başlıqlar brauzer və ya sistem tərəfindən istifadə olunur.

$ curl -I example.com

curl eyni anda –I və –L açarları ilə işə salınarsa, komanda sayt digər ünvana yönlədirilmiş olsa belə başlıqları göstərəcək.

Başlıqları ötürmək

curl komandası başlıqları əldə etdiyi kimi, resursa ötürə də bilir. Bunun üçün -H açarından istifadə edilir. Bir neçə başlıq göndərmək üçün isə hər başlığın əvvəlində bu aşar yazılmalıdır.

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

POST Закачка файла на сервер

POST veb saytlarda məlumat qəbul etmək üçün ən çox istifadə olunan metoddur. Məsələn, hər hansı saytda qeydiyyat forması doldurarkən, daxil edilmiş məlumatlar serverə POST metodu ilə göndəriləcək. curl vasitəsilə bu metodla sayta məlumat göndərmək üçün -d açarından istifadə edilir.

$ curl -d 'name=geek&location=usa' http://example.com

POST metodu ilə mətn əvəzinə fayl göndərmək üçün növbəti komandanı daxil etmək lazımdır.

$ curl -d @filename http://example.com

Nəzərə alın ki, saytda göndərmək istədiyiniz hər məlumat və fayldan öncə -d açarı istifadə olunmalıdır.

FTP protokolu ilə fayl yükləmək üçün isə –T açarından yararlanmaq olar.

$ curl -T myfile.txt ftp://example.com/some/directory/

E-mail göndərmək

Prinsipcə, elektron məktub yollamaq, serverə məlumat yükləməyin bir yoludur. curl da fayl yükləmə imkanı verdiyinə görə, onu elektron məktub göndərmək üçün istifadə edə bilərik. Bunun çox üsulu var, amma burda SMTP server üzərindən e-mail göndərilməsini göstərəcəyik.

 $ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

E-mail-in mətni olan faylın müvafiq qaydada tərtib edilməli olduğunu da nəzərə alın. Məsələn aşağıdakı kimi:

$ cat email.txt

From: Web Administrator <[email protected]>
 
To: John Doe <[email protected]>
 
Subject: An example email
 
Date: Sat, 7 Dec 2019 02:10:15
 
 
 
John,
 
Hope you have a great weekend.
 
-Admin

Ətraflı məlumat üçün isə yuxarıda qeyd etdiyimiz man komdasından istifadə edə bilərsiz.

E-mail oxumaq

Elektron məktubları almaq üçün IMAP və POP3 protokollarından istifadə edilir və curl onların hər ikisini dəstəkləyir. Məsələn, aşağıdalı koddan istifadə edərək IMAP protokolu ilə elektron poçt hesabına daxil ola bilərik:

$ curl -u username:password imap://mail.example.com

Bu komanda mövcud elektron poçt qutularının siyahısını göstərəcək, amma məzmunu görə bilməyəcəyik. Bunun üçün -X opsiyasına arqument olaraq elektron məktubun UID-sini vermək lazımdır.

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

curl və wget arasında fərq

Bəzən istifadəçilər Linux curl və wget-i qarışdırırlar. Səbəb isə hər iki alətin serverdən informasiya çəkmək üçün istifadə edilməsidir. Lakin bu onların arasında olan yeganə oxşar cəhətdir.

Bu yazıda curl-un imkanları haqqında danışdıq.wget isə daha fərqli imkanlar verir. wget fayl yükləmək üçün ən yaxşı alətdir, həmçinin o, bu əməliyyatı rekursiv, yəni bütün link və kataloqlara keçid edərək, bütün saytı yükləyə bilir.

Beləliklə, əgər hər hansı saytın bütün qaynaq fayllarını endirmək üçün wget istifadə edin. Yox əgər HTTP və ya HTTPS-dən fərqli protokol istifadə olunursa, yaxud serverə fayl yükləmək lazımdırsa, curl daha uyğundur. curl faylları bir-bir endirmək üçün əlverişlidir, amma wget-də bu işin öhdəsindən pis gəlmir.

Mənbə: Likegeeks

Yazını paylaş