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.
Tartalomjegyzék
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.
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
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.
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 -ONote 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.netcurl 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.txtA 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.txtA 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.txtParamé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.orgA 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:0131103628A 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.