Brug cURL til at hente fjernfiler fra kommandolinjen

Det kraftfulde curl-kommandolinjeværktøj kan bruges til at downloade filer fra næsten enhver fjernserver. Longtime kommandolinjebrugere ved, at dette kan være nyttigt for en lang række situationer, men for at holde tingene simple, vil mange opdage, at downloadning af en fil med krøller ofte kan være et hurtigere alternativ til at bruge en webbrowser eller en FTP-klient fra GUI-siden af OS X (eller Linux). Dette er nyttigt for lokale situationer, men der er særlig værdi, hvis du er i en situation, hvor du skal downloade noget til en ekstern Mac, når du er tilsluttet via SSH.

Med henblik på dette gennemgang vil vi primært fokusere på at downloade filer fra de to almindeligt forekommende HTTP- og SFTP-protokoller, selv om det skal bemærkes, at cURL understøtter mange flere protokoller. Selvom krølle er nem at bruge, anbefales det at have en vis viden om kommandolinjen.

Download Præcise Match Filer med Curl -O

Ved hjælp af store bogstaver -O flag med curl downloader filen fra den eksterne server, mens det nøjagtige filnavn opretholdes, er den grundlæggende syntaks for dette følgende:

curl -O [url]

Det betyder, at hvis den angivne URL-fil hedder "sample.zip", downloades den med filnavnet "sample.zip", og hvis filen hedder noget enormt og kompliceret som "LongExampleFileNameForOSXDaily-v-1-3-51-revision- 515b12-readme.txt "på den eksterne server, vil den gemme med det nøjagtige navn på den lokale maskine. Længere filnavne bliver ofte bedre håndteret med -o-flag i stedet for -O, som vi skal adressere kort tid.

Regelmæssige læsere kan huske, at vi brugte curl -O kommandoen, når de forklarede, hvordan man ekstraherer det faktiske lydindhold fra en m3u streaming-fil.

Begyndelse med download med curl viser procenten overført, tid brugt downloading og resterende tid, og overførselshastigheden.

Skærmbilledet giver en bedre repræsentation end det indsatte eksempel nedenfor, men det ser sådan ud:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Med overførselshastighed viser du kan omdirigere udgangen af ​​curl til / dev / null og bruge den til at teste internetforbindelse hastighed, men wget kommandoen har en lettere at læse og følge overførselslinjen dermed wget er bedre egnet til den opgave.

Gem en fjernfil med et andet navn med curl -o

Ved hjælp af en lille bogstaver -o-flag vil du give mulighed for at angive et andet filnavn for den downloadede fil, end hvad den hedder på den eksterne server. Det kan være nyttigt at reducere langvarige filnavne eller bare mærke noget, så det er lettere at finde på egen hånd. Den generelle syntaks ville være:

curl -o [shortname] [url]

Hvis du f.eks. Vil gemme en iOS IPSW-fil, som du fandt på Apple-servere uden at have det lange fulde navn, kan du bruge følgende:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw

Dette vil hente filen "iPhone5, 3_7.0.4_11B554a_Restore.ipsw", men kaldes kortere som den mere meningsfulde "iPhone5C-704.ipsw".

Hvis du hellere ikke vil gemme filen til den nuværende arbejdsmappe, skal du angive en sti som en del af filnavnet som sådan:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Downloadning af flere filer samtidigt med krølle

cURL kan nemt downloade flere filer på samme tid, alt hvad du skal gøre er at angive mere end en webadresse som sådan:

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

For filer med forskellige navne eller vært på forskellige servere eller inden for forskellige mappestier, skal du bruge den komplette webadresse, for eksempel:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

Hvis de filnavne, der skal downloades på den anden side, derimod bruger trinvis navngivning, kan du bruge parenteser til at angive et downloadområde, som sådan:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

Dette ville gribe filerne fdl-1.1.txt, fd1-1.2.txt og fd1-1.3.txt alle samtidigt uden at skulle angive hver unik webadresse. Selvfølgelig virker dette kun, hvis filerne er i samme mappe sammen og på samme domæne.

Autentificering med curl

Du kan også bestå godkendelse med cURL ved hjælp af -u flag:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Husk at bash-historie gemmer adgangskoden i almindelig tekst, når du bruger -u med et brugernavn og et kodeord, der er angivet, og det anbefales derfor ikke i de fleste situationer. Du kan komme rundt ved at placere et rum foran 'krølle'. Hvis du ikke bruger mellemrumstasten til at prefikse kommandoen, vil du sandsynligvis vil tømme kommandobogen efterfølgende for at være sikker.

Understøttede protokoller og brug ud over HTTP og FTP

Som tidligere nævnt går cURL-brugen langt ud over HTTP og FTP, da den krølle manuelle sideindtastning nævner yderligere protokoller i beskrivelsen:

curl er et værktøj til at overføre data fra eller til en server ved hjælp af en af
understøttede protokoller (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET og TFTP).

Derudover vil du opdage, at krøllen også kan bruges til PUT- og POST-anmodninger, cookies, proxies, tunneller, genoptag downloads og endda gribende HTTP-headerinformation eller ændring af en brugeragent (effektivt spoofing) uden at skulle bruge en dedikeret web browser.

Ligesom de fleste kommandolinjeværktøjer kan du lære meget mere om krølle ved at indkalde den relevante man side med kommandoen 'mand krøllet'.