Si të përdorni curl për të shkarkuar skedarë nga linja e komandës Linux


Komanda Linux curl mund të bëjë shumë më tepër sesa shkarkimin e skedarëve. Zbuloni se çfarë mund të bëjë curl dhe kur duhet ta përdorni në vend të wget.

curl kundër wget: Cili është ndryshimi?

Njerëzit shpesh luftojnë për të identifikuar pikat e forta relative të komandave wget dhe curl. Komandat kanë disa mbivendosje funksionale. Secili prej tyre mund të marrë skedarë nga vende të largëta, por këtu përfundon ngjashmëria.

wget është një mjet fantastik për shkarkimin e përmbajtjes dhe skedarëve. Mund të shkarkojë skedarë, faqe në internet dhe drejtori. Ai përmban rutina inteligjente për të përshkuar lidhjet në faqet e internetit dhe për të shkarkuar në mënyrë rekursive përmbajtje në një uebsajt të tërë. Është i patejkalueshëm si një menaxher shkarkimi i linjës së komandës.

curl plotëson një nevojë krejtësisht të ndryshme. Po, ai mund të marrë skedarë, por nuk mund të lundrojë në mënyrë rekursive në një faqe interneti duke kërkuar përmbajtje për të marrë. Ajo që bën në të vërtetë curl është që ju lejon të ndërveproni me sistemet në distancë duke bërë kërkesa për ato sisteme dhe duke marrë dhe shfaqur përgjigjet e tyre për ju. Këto përgjigje mund të jenë përmbajtja dhe skedarët e faqeve të internetit, por ato mund të përmbajnë gjithashtu të dhëna të ofruara nëpërmjet një shërbimi në internet ose API si rezultat i pyetjes së bërë nga kërkesa për curl.

Dhe curl nuk kufizohet në faqet e internetit. curl mbështet mbi 20 protokolle, duke përfshirë HTTP, HTTPS, SCP, SFTP dhe FTP. Dhe me siguri, për shkak të menaxhimit superior të tubave Linux, curl mund të integrohet më lehtë me komandat dhe skriptet e tjera.

Autori i curl ka një faqe interneti që përshkruan ndryshimet që ai sheh midis curl dhe wget.

Instalimi i kaçurrelave

Nga kompjuterët e përdorur për të hulumtuar këtë artikull, Fedora 31 dhe Manjaro 18.1.0 kishin curl të instaluar tashmë. curl duhej të instalohej në Ubuntu 18.04 LTS. Në Ubuntu, ekzekutoni këtë komandë për ta instaluar:

sudo apt-get install curl

Versioni i kaçurrelave

Opsioni --version bën që curl të raportojë versionin e tij. Ai gjithashtu rendit të gjitha protokollet që ai mbështet.

curl --version

Marrja e një faqe në internet

Nëse drejtojmë curl në një faqe interneti, ajo do ta marrë atë për ne.

curl https://www.bbc.com

Por veprimi i tij i paracaktuar është ta hedhë atë në dritaren e terminalit si kod burimor.

Kujdes: Nëse nuk i tregoni curl se dëshironi që diçka të ruhet si skedar, ai gjithmonë do ta hedhë atë në dritaren e terminalit. Nëse skedari që po merr është një skedar binar, rezultati mund të jetë i paparashikueshëm. Shell mund të përpiqet të interpretojë disa nga vlerat e bajtit në skedarin binar si karaktere kontrolli ose sekuenca ikjeje.

Ruajtja e të dhënave në një skedar

Le t'i themi curl të ridrejtojë daljen në një skedar:

curl https://www.bbc.com  > bbc.html

Këtë herë ne nuk e shohim informacionin e marrë, ai dërgohet direkt në skedar për ne. Për shkak se nuk ka dalje të dritares së terminalit për t'u shfaqur, curl nxjerr një grup informacioni progresi.

Nuk e bëri këtë në shembullin e mëparshëm sepse informacioni i progresit do të ishte shpërndarë në kodin burimor të faqes së internetit, kështu që curl e shtypi atë automatikisht.

Në këtë shembull, curl zbulon se dalja po ridrejtohet te një skedar dhe se është e sigurt të gjenerohet informacioni i progresit.

Informacioni i dhënë është:

  • % Total: Shuma totale që do të merret.
  • % e marrë: Përqindja dhe vlerat aktuale të të dhënave të marra deri më tani.
  • % Xferd: Përqindja dhe fakti i dërguar, nëse të dhënat po ngarkohen.
  • Shpejtësia mesatare e shkarkimit: Shpejtësia mesatare e shkarkimit.
  • Shpejtësia mesatare e ngarkimit: Shpejtësia mesatare e ngarkimit.
  • Koha totale: Kohëzgjatja totale e parashikuar e transferimit.
  • Koha e shpenzuar: Koha e kaluar deri tani për këtë transferim.
  • Koha e mbetur: Koha e parashikuar e mbetur për përfundimin e transferimit
  • Shpejtësia aktuale: Shpejtësia aktuale e transferimit për këtë transferim.

Për shkak se ne e ridrejtuam daljen nga curl në një skedar, tani kemi një skedar të quajtur bbc.html.

Duke klikuar dy herë atë skedar do të hapet shfletuesi juaj i paracaktuar në mënyrë që të shfaqë faqen e marrë në internet.

Vini re se adresa në shiritin e adresave të shfletuesit është një skedar lokal në këtë kompjuter, jo një faqe interneti në distancë.

Nuk kemi nevojë të ridrejtojmë daljen për të krijuar një skedar. Mund të krijojmë një skedar duke përdorur opsionin -o (output) dhe duke i thënë curl të krijojë skedarin. Këtu po përdorim opsionin -o dhe po japim emrin e skedarit që dëshirojmë të krijojmë bbc.html.

curl -o bbc.html https://www.bbc.com

Përdorimi i një shiriti progresi për të monitoruar shkarkimet

Për të zëvendësuar informacionin e shkarkimit të bazuar në tekst nga një shirit i thjeshtë progresi, përdorni opsionin -# (shiriti i përparimit).

curl -x -o bbc.html https://www.bbc.com

Rinisja e një shkarkimi të ndërprerë

Është e lehtë të rifillosh një shkarkim që është ndërprerë ose ndërprerë. Le të fillojmë një shkarkim të një skedari të madh. Ne do të përdorim versionin më të fundit të mbështetjes afatgjatë të Ubuntu 18.04. Ne po përdorim opsionin --output për të specifikuar emrin e skedarit në të cilin dëshirojmë ta ruajmë: ubuntu180403.iso.

curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

Shkarkimi fillon dhe shkon drejt përfundimit.

Nëse e ndërpresim me forcë shkarkimin me Ctrl+C, ne kthehemi në vijën e komandës dhe shkarkimi braktiset.

Për të rifilluar shkarkimin, përdorni opsionin -C (vazhdoni në). Kjo bën që curl të rifillojë shkarkimin në një pikë të caktuar ose offset brenda skedarit të synuar. Nëse përdorni një vijë ndarëse - si zhvendosje, curl do të shikojë pjesën tashmë të shkarkuar të skedarit dhe do të përcaktojë zhvendosjen e saktë për t'u përdorur për vete.

curl -C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

Shkarkimi është rifilluar. curl raporton kompensimin në të cilin po riniset.

Po merr titujt HTTP

Me opsionin -I (head), ju mund të merrni vetëm titujt HTTP. Kjo është njësoj si dërgimi i komandës HTTP HEAD në një server në internet.

curl -I www.twitter.com

Kjo komandë merr vetëm informacion; ai nuk shkarkon asnjë faqe interneti ose skedar.

Shkarkimi i URL-ve të shumta

Duke përdorur xargs ne mund të shkarkojmë shumë URL menjëherë. Ndoshta ne duam të shkarkojmë një seri faqesh në internet që përbëjnë një artikull ose udhëzim të vetëm.

Kopjojini këto URL në një redaktues dhe ruajeni në një skedar të quajtur urls-to-download.txt. Ne mund të përdorim xargs për të trajtuar përmbajtjen e çdo rreshti të skedarit të tekstit si një parametër të cilin ai do ta ushqejë në curl, nga ana tjetër.

https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#2
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5

Kjo është komanda që duhet të përdorim për t'i dhënë xargs këto URL në curl një nga një:

xargs -n 1 curl -O < urls-to-download.txt

Vini re se kjo komandë përdor komandën e daljes -O (skedar në distancë), e cila përdor një O me shkronja të mëdha. Ky opsion bën që curl të ruajë skedarin e marrë me të njëjtin emër që ka skedari në serverin në distancë.

Opsioni -n 1 i thotë xargs të trajtojë çdo rresht të skedarit të tekstit si një parametër të vetëm.

Kur ekzekutoni komandën, do të shihni që shkarkime të shumta fillojnë dhe mbarojnë, njëra pas tjetrës.

Kontrollimi në shfletuesin e skedarëve tregon se skedarët e shumtë janë shkarkuar. Secili mban emrin që kishte në serverin në distancë.

Shkarkimi i skedarëve nga një server FTP

Përdorimi i curl me një server të Protokollit të Transferimit të Skedarit (FTP) është i lehtë, edhe nëse duhet të vërtetoni me një emër përdoruesi dhe fjalëkalim. Për të kaluar një emër përdoruesi dhe fjalëkalim me curl përdorni opsionin -u (user) dhe shkruani emrin e përdoruesit, një dy pika “:” dhe fjalëkalimin. Mos vendosni hapësirë para ose pas zorrës së trashë.

Ky është një server FTP falas për testim i organizuar nga Rebex. Faqja e testimit FTP ka një emër përdoruesi të paracaktuar të demo, dhe fjalëkalimi është fjalëkalimi. Mos e përdorni këtë lloj emri të dobët përdoruesi dhe fjalëkalimi në një server të prodhimit ose të vërtetë FTP.

curl -u demo:password ftp://test.rebex.net

curl kupton se ne po e drejtojmë atë në një server FTP dhe kthen një listë të skedarëve që janë të pranishëm në server.

Skedari i vetëm në këtë server është skedari readme.txt, me gjatësi 403 bajt. Le ta marrim atë. Përdorni të njëjtën komandë si një moment më parë, me emrin e skedarit të bashkangjitur në të:

curl -u demo:password ftp://test.rebex.net/readme.txt

Skedari merret dhe curl shfaq përmbajtjen e tij në dritaren e terminalit.

Pothuajse në të gjitha rastet, do të jetë më e përshtatshme që skedari i marrë të ruhet në disk për ne, në vend që të shfaqet në dritaren e terminalit. Edhe një herë ne mund të përdorim komandën e daljes -O (skedari në distancë) për të ruajtur skedarin në disk, me të njëjtin emër skedari që ka në serverin në distancë.

curl -O -u demo:password ftp://test.rebex.net/readme.txt

Skedari merret dhe ruhet në disk. Mund të përdorim ls për të kontrolluar detajet e skedarit. Ka të njëjtin emër si skedari në serverin FTP dhe është me të njëjtën gjatësi, 403 bajt.

ls -hl readme.txt

Dërgimi i parametrave te serverët në distancë

Disa serverë në distancë do të pranojnë parametra në kërkesat që u dërgohen atyre. Parametrat mund të përdoren për të formatuar të dhënat e kthyera, për shembull, ose mund të përdoren për të zgjedhur të dhënat e sakta që përdoruesi dëshiron të marrë. Shpesh është e mundur të ndërveprosh me ndërfaqet e programimit të aplikacioneve në ueb (API) duke përdorur curl.

Si një shembull i thjeshtë, faqja e internetit e ipify ka një API mund të kërkohet për të përcaktuar adresën tuaj të jashtme IP.

curl https://api.ipify.org

Duke shtuar parametrin format në komandë, me vlerën json mund të kërkojmë sërish adresën tonë të jashtme IP, por këtë herë të dhënat e kthyera do të kodohen në formatin JSON.

curl https://api.ipify.org?format=json

Këtu është një shembull tjetër që përdor një API të Google. Ai kthen një objekt JSON që përshkruan një libër. Parametri që duhet të jepni është numri Standard Ndërkombëtar i Librit (ISBN) numri i një libri. Këto mund t'i gjeni në kopertinën e pasme të shumicës së librave, zakonisht nën një barkod. Parametri që do të përdorim këtu është 0131103628.

curl https://www.googleapis.com/books/v1/volumes?q=isbn:0131103628

Të dhënat e kthyera janë gjithëpërfshirëse:

Ndonjëherë kaçurrela, Ndonjëherë wget

Nëse do të doja të shkarkoja përmbajtje nga një faqe interneti dhe të kërkoja strukturën e pemës së sajtit në mënyrë rekursive për atë përmbajtje, do të përdorja wget.

Nëse do të doja të ndërveproja me një server ose API në distancë dhe ndoshta të shkarkoja disa skedarë ose faqe ueb, do të përdorja curl. Sidomos nëse protokolli ishte një nga të shumtët që nuk mbështetej nga wget.

RELATED: Best Linux Laptops for Developers and Enthusiasts