A curl használata fájlok letöltéséhez a Linux parancssorból

A Linux curl parancs sokkal többre képes, mint a fájlok letöltése. Tudja meg, mire képes a curl, és mikor érdemes használni a wget helyett.

curl vs. wget : Mi a különbség?

Az emberek gyakran nehezen azonosítják a wget és curl parancsok relatív erősségeit. A parancsok között van némi funkcionális átfedés. Mindegyikük képes letölteni fájlokat távoli helyekről, de a hasonlóság itt véget is ér.

wget egy fantasztikus eszköz tartalmak és fájlok letöltéséhez. Fájlokat, weboldalakat és könyvtárakat tud letölteni. Intelligens rutinokat tartalmaz a weboldalakon található hivatkozások bejárására és a tartalom rekurzív letöltésére a teljes webhelyen. Parancssori letöltéskezelőként felülmúlhatatlan.

göndör kielégít teljesen más igény. Igen, képes visszakeresni a fájlokat, de nem tud rekurzív módon navigálni a letöltendő tartalmat kereső webhelyeken. A curl valójában lehetővé teszi a távoli rendszerekkel való interakciót azáltal, hogy kéréseket küld ezeknek a rendszereknek, és lekéri és megjeleníti a válaszaikat. Ezek a válaszok lehetnek weboldal tartalma és fájlok, de tartalmazhatnak webszolgáltatáson vagy API-n keresztül a curl kérés által feltett „kérdés” eredményeként biztosított adatokat is.

És a curl nem korlátozódik a webhelyekre. A curl több mint 20 protokollt támogat, beleértve a HTTP, HTTPS, SCP, SFTP és FTP protokollt. És vitathatatlanul a Linux csövek kiváló kezelésének köszönhetően a curl könnyebben integrálható más parancsokkal és szkriptekkel.

A curl szerzőjének van egy weboldala leírja az általa látott különbségeket curl és wget között.

Curl telepítése

A cikk kutatásához használt számítógépek közül a Fedora 31 és a Manjaro 18.1.0 már telepítve volt. A curl-t az Ubuntu 18.04 LTS-re kellett telepíteni. Ubuntu esetén futtassa ezt a parancsot a telepítéshez:

sudo apt-get install curl

A göndör verzió

A –version opció a curlreportot teszi verzióvá. Ezenkívül felsorolja az összes általa támogatott protokollt.

curl --version

Weboldal lekérése

Ha rámutatunk a curl-re egy weboldalra, az lekéri helyettünk.

curl https://www.bbc.com

De az alapértelmezett művelet az, hogy forráskódként kiírja a terminálablakba.

  18 legjobb Syslog szerver Windows és Linux/Unix rendszerhez

Vigyázat: Ha nem mondja meg a curl-nek, hogy valamit fájlként szeretne tárolni, mindig kiírja a terminálablakba. Ha a letöltött fájl bináris fájl, akkor az eredmény megjósolhatatlan lehet. A shell megpróbálhatja a bináris fájl egyes bájtértékeit vezérlőkarakterként vagy escape szekvenciaként értelmezni.

Adatok mentése fájlba

Mondjuk meg a curl-nek, hogy irányítsa át a kimenetet egy fájlba:

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

curl https://www.bbc.com > bbc.html egy terminálablakban” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onrror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Ezúttal nem látjuk a letöltött információkat, hanem közvetlenül a fájlba küldik helyettünk.  Mivel nincs megjeleníthető terminálablak-kimenet, a curl folyamatinformáció-készletet ad ki.</p>
<p>Az előző példában ezt nem tette meg, mert az előrehaladási információ szétszórva lett volna a weboldal forráskódjában, így a curl automatikusan elnyomta.</p>
<p>Ebben a példában a curl azt észleli, hogy a kimenet egy fájlba van átirányítva, és biztonságos az előrehaladási információk generálása.</p>
<p><img loading=

A közölt információk a következők:

% Összesen: A teljes lekérendő összeg.
% Beérkezett: Az eddig visszakeresett adatok százalékos és tényleges értékei.
% Xferd: A százalékos és a tényleges elküldés, ha adatfeltöltés folyamatban van.
Átlagos letöltési sebesség: Az átlagos letöltési sebesség.
Átlagos feltöltési sebesség: Az átlagos feltöltési sebesség.
Összes idő: Az átvitel becsült teljes időtartama.
Eltöltött idő: Az átvitelhez eddig eltelt idő.
Hátralévő idő: Az átvitel befejezéséig hátralévő becsült idő
Aktuális sebesség: Az átvitel aktuális átviteli sebessége.

Mivel a curl kimenetét átirányítottuk egy fájlba, most van egy „bbc.html” nevű fájlunk.

Ha duplán kattint erre a fájlra, megnyílik az alapértelmezett böngésző, és megjeleníti a letöltött weboldalt.

Vegye figyelembe, hogy a böngésző címsorában található cím egy helyi fájl ezen a számítógépen, nem pedig egy távoli webhely.

Fájl létrehozásához nem kell átirányítanunk a kimenetet. Létrehozhatunk egy fájlt az -o (output) kapcsolóval, és a curl parancsot adjuk a fájl létrehozásához. Itt a -o kapcsolót használjuk, és megadjuk a létrehozni kívánt fájl nevét „bbc.html”.

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

Folyamatjelző sáv használata a letöltések figyelésére

Ha a szöveges letöltési információkat egy egyszerű folyamatjelző sávra szeretné váltani, használja a -# (folyamatsor) opciót.

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

Megszakított letöltés újraindítása

A megszakadt vagy megszakadt letöltést könnyű újraindítani. Kezdjük el egy méretes fájl letöltését. Az Ubuntu 18.04 legújabb hosszú távú támogatási verzióját fogjuk használni. A –output opciót használjuk annak a fájlnak a nevének megadására, amelybe menteni szeretnénk: „ubuntu180403.iso”.

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

A letöltés elindul, és a befejezés felé halad.

  Szoftver telepítése az Arch Linux felhasználói tárból

Ha erőszakkal megszakítjuk a letöltést a Ctrl+C billentyűkombinációval, akkor visszatérünk a parancssorba, és a letöltés megszakad.

A letöltés újraindításához használja a -C (folytatás itt) opciót. Ez azt eredményezi, hogy a curl újraindítja a letöltést a célfájl megadott pontján vagy eltolásában. Ha kötőjelet használ – eltolásként, a curl megnézi a fájl már letöltött részét, és meghatározza magának a megfelelő eltolást.

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

A letöltés újraindul. curl jelenti az eltolást, amelynél újraindul.

HTTP-fejlécek lekérése

A -I (head) opcióval csak a HTTP fejléceket tudja lekérni. Ez ugyanaz, mint a HTTP HEAD parancs egy webszerverre.

curl -I www.twitter.com

Ez a parancs csak információkat kér le; nem tölt le semmilyen weboldalt vagy fájlt.

Több URL letöltése

Az xargs használatával többféle fájlt is letölthetünk URL-ek egyszerre. Talán szeretnénk letölteni egy sor weboldalt, amelyek egyetlen cikket vagy oktatóanyagot alkotnak.

Másolja át ezeket az URL-eket egy szerkesztőbe, és mentse el az „urls-to-download.txt” nevű fájlba. Az xargs-t használhatjuk kezelje az egyes sorok tartalmát a szövegfájl paramétereként, amelyet viszont a curl-hez továbbít.

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

Ezt a parancsot kell használnunk ahhoz, hogy az xargs átadja ezeket az URL-eket, hogy egyenként görbüljön:

xargs -n 1 curl -O 

Note that this command uses the -O (remote file) output command, which uses an uppercase “O.” This option causes curl to save the retrieved  file with the same name that the file has on the remote server.

The -n 1 option tells xargs to treat each line of the text file as a single parameter.

When you run the command, you’ll see multiple downloads start and finish, one after the other.

Checking in the file browser shows the multiple files have been downloaded. Each one bears the name it had on the remote server.

Downloading Files From an FTP Server

Using curl with a File Transfer Protocol (FTP) server is easy, even if you have to authenticate with a username and password. To pass a username and password with curl use the -u (user) option, and type the username, a colon “:”, and the password. Don’t put a space before or after the colon.

This is a free-for-testing FTP server hosted by Rebex. The test FTP site has a pre-set username of “demo”, and the password is “password.” Don’t use this type of weak username and password on a production or “real” FTP server.

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

curl kitalálja, hogy egy FTP-kiszolgálóra irányítjuk, és visszaadja a szerveren található fájlok listáját.

Az egyetlen fájl ezen a szerveren egy „readme.txt” fájl, amelynek hossza 403 bájt. Szerezzük vissza. Használja ugyanazt a parancsot, mint egy pillanattal ezelőtt, a fájlnévvel hozzáfűzve:

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

A fájl letöltődik, és a curl megjeleníti a tartalmát a terminál ablakában.

Szinte minden esetben kényelmesebb lesz, ha a letöltött fájlt lemezre mentjük, nem pedig a terminál ablakában. Ismét használhatjuk a -O (távoli fájl) kimeneti parancsot, hogy a fájlt lemezre mentsük, ugyanazzal a fájlnévvel, mint a távoli szerveren.

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

A fájl letöltődik és lemezre kerül. Az ls segítségével ellenőrizhetjük a fájl részleteit. Ugyanaz a neve, mint az FTP-kiszolgálón lévő fájlnak, és azonos hosszúságú, 403 bájt.

ls -hl readme.txt

Paraméterek küldése távoli szerverekre

Egyes távoli kiszolgálók paramétereket fogadnak el a nekik küldött kérésekben. A paraméterek felhasználhatók például a visszaküldött adatok formázására, vagy arra is használhatók, hogy kiválassza azokat a pontos adatokat, amelyeket a felhasználó le szeretne kérni. Gyakran lehetséges a weben való interakció alkalmazás programozási felületek (API-k) curl használatával.

Egyszerű példaként a ipify A webhely API-val rendelkezik, lekérdezheti külső IP-címét.

curl https://api.ipify.org

A format paramétert hozzáadva a parancshoz, a “json” értékkel ismét lekérhetjük a külső IP címünket, de ezúttal a visszaadott adatok a JSON formátum.

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

Íme egy másik példa, amely a Google API-t használja. Egy könyvet leíró JSON objektumot ad vissza. A megadandó paraméter a Nemzetközi szabványos könyvszám könyv (ISBN) száma. Ezeket a legtöbb könyv hátsó borítóján találhatja meg, általában vonalkód alatt. Az itt használt paraméter a „0131103628”.

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

A visszaküldött adatok átfogóak:

Néha göndör, Néha wget

Ha tartalmat szeretnék letölteni egy webhelyről, és a webhely fastruktúrájában rekurzív módon keresnék az adott tartalomra, akkor a wget-et használnám.

Ha kapcsolatba szeretnék lépni egy távoli szerverrel vagy API-val, és esetleg letöltenék néhány fájlt vagy weboldalt, akkor a curl-t használnám. Különösen, ha a protokoll egyike volt a sok közül, amelyet a wget nem támogat.