Få CURLy: 10 nyttige ting, du kan gøre med cURL

Få CURLy: 10 nyttige ting, du kan gøre med cURL

Når vi begynder at lære om kommandolinjeværktøjer, har vi en tendens til at se dem som et enkelt formål. Det har du lært





cat

udskriver filindhold,





ls

viser alle elementer i et bibliotek og





du

viser diskpladsforbruget. Mange kommandolinjeværktøjer har imidlertid snesevis af muligheder, som alle er pænt beskrevet i deres

man

filer. Nogle af dem kan gøre underværker, når de kombineres med andre kommandoer.



Det er selvfølgelig urimeligt at forvente, at nogen skal huske hver eneste mulighed. Med det i tankerne er det godt at lejlighedsvis opdatere vores kendskab til Linux -kommandoer , fordi du måske opdager nye anvendelser til dem.

Denne gang fokuserer vi på cURL , et værktøj til overførsel af data via en række internetprotokoller såsom HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP og mere.





Forenklet udfører cURL forskellige anmodninger fra en klient til en server og etablerer en forbindelse mellem dem ved hjælp af en specifik protokol og dens tilhørende metoder. For eksempel kan cURL som en HTTP -klient sende en anmodning om at se eller downloade indhold (GET -anmodningsmetode) eller at sende indhold via en formular på et websted (POST -anmodningsmetode). Mange webapplikationer og tjenester tillader cURL at interagere med deres API'er (Application Programming Interface).

Fordi deres funktionalitet i et vist omfang overlapper, sammenlignes cURL og wget ofte med hinanden. Begge værktøjer kan downloade indhold fra Internettet, men wget understøtter rekursive downloads, webskrabning og føles generelt lettere at bruge. Hvis du bare vil downloade filer fra terminalen, er wget sandsynligvis et bedre valg.





På den anden side, hvis du har brug for avancerede HTTP -godkendelsesmetoder og vil uploade filer samt downloade dem, er det værd at lære at cURL. Wget understøtter også kun HTTP (S) og FTP, mens cURL dækker en lang række protokoller. Dette betyder, at cURL kan gøre flere seje ting - og her er ti eksempler på at bevise det.

1. Få vejrudsigten

Hvis nogen fortalte dig at tjekke vejret fra terminalen, ville du forvente at se nogle kedelige tal. Ikke med denne kommando.

curl http://wttr.in/LOCATION

Oplysningerne leveres af en CLI -applikation kaldet vi går , men hvis du ikke vil installere det, kan cURL hente prognosen fra webfronten wttr.in. Det eneste, det har brug for, er den placering, du ønsker prognosen for. Indtast bare navnet på en by, dens lufthavnskode eller din nuværende IP -adresse. En ny funktion viser oplysningerne om månefaser, hvis du skriver:

curl wttr.in/Moon

2. Download filer, og genoptag downloads

At downloade filer er noget, vi normalt gør i browseren. Nogle gange vil du gerne bruge en download manager; for eksempel når du downloader flere filer på én gang, eller når du vil sætte downloads på pause. Selvom cURL ikke er et populært valg til samtidige downloads (wget anbefales i stedet), kan du stadig bruge det til det formål ved at kombinere dets kraftfulde muligheder (switches). Først skal du bruge et direkte link til filen. I dette eksempel vil vi bruge en PDF af Linux Voice -magasinet.

curl -O -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

O-kontakten med store bogstaver (-O) får cURL til at gemme filen med standardfilnavnet (normalt det fra selve linket). Hvis du ville gemme det under et andet navn, ville du bruge små o efterfulgt af det nye navn:

curl -o magazine.pdf -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Som standard gemmes filerne i det aktuelle bibliotek (tjek det med

pwd

kommando). For at gemme dem andre steder skal du angive stien efter -o -kontakten. -C - kontakten gør det muligt for cURL at genoptage overførslen. Du stopper det ved at trykke på Ctrl+C i terminalen og genoptage ved at køre den samme downloadkommando igen:

cURL viser downloadforløbet i et tabellignende format med kolonner, der indeholder oplysninger om downloadhastighed, samlet filstørrelse, forløbet tid og mere. Hvis du ikke kan lide dette, kan du vælge en enklere statuslinje ved at tilføje -# eller --progress -bar til din cURL -kommando.

For at downloade flere filer på én gang skal du bare angive linkene efter hinanden:

curl -O file1.txt -O file2.pdf -O file3.zip

Ved hjælp af andre kommandolinjeværktøjer kan vi batch-downloade alle PNG- og JPG-billeder fra en Tumblr-blog:

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2 | while read l; do curl '$l' -o '${l##*/}'; done

I dette tilfælde,

cut

og

grep

indsamle oplysninger om filnavne og formater det, så kun filer med angivne udvidelser vises. Hvis du kører kommandoen uden det sidste rør:

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2

du får bare en liste over filer, der opfylder vores kriterier, men de vil faktisk ikke blive downloadet. cURL kan få en liste med billeder fra en række sider, forudsat at bloggen bruger standard pagination:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2

Du kan ændre området ved at ændre tallene i parenteser. Igen ville denne kommando kun vise billederne; For at downloade dem skal du køre den fulde kommando i det bibliotek, hvor du vil gemme billederne:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2 | while read l; do curl '$l' -o '${l##*/}'; done

Hvis du er velbevandret regulære udtryk , kan du forbedre udseendet og effektiviteten af ​​denne kommando og dele resultatet i kommentarerne.

3. Administrer filer på en FTP -server

Vi hører ikke meget om FTP i disse dage, men det betyder ikke, at det er forældet. Faktisk deler mange open source -projekter og Linux -distributioner deres software på FTP -servere. Da FTP understøttes af cURL, kan du bruge den som en simpel FTP -klient til at uploade og downloade filer. Du kan gennemse filerne på en FTP -server ved at få adgang til bibliotekerne:

curl ftp://ftp.debian.org/debian/

Hvis du vil angive en underkatalog, skal du skrive dens navn efterfulgt af et skråstreg (/).

Download af filer ligner HTTP -downloads beskrevet i det foregående afsnit. Du kan enten bruge -o eller -O og tilføje -C -hvis du vil sætte downloads på pause.

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com/stable/17.3/linuxmint-17.3-kde-64bit.iso

Selvom cURL ikke understøtter rekursive downloads (husk, wget gør!), Kan den stadig downloade en række filer på én gang. Den eneste betingelse er, at filnavnene følger et mønster. For eksempel kan vi downloade fra en server til tapethosting, hvor tapeterne alle hedder 'wallpaperNUMBER':

curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg

Nogle FTP -servere kræver godkendelse, før du kan downloade filer. cURL lader dig logge ind med -u (bruger) mulighed:

curl -u username:password -O ftp://ftp.protectedserver.com/files/example.txt

Du kan også uploade filer til en FTP -server med indstillingen -T (overførsel):

curl -u username:password -T /home/user/Documents/test.txt ftp://ftp.myserver.com

Her kan du også definere flere filer som et område. Denne funktion kaldes undertiden 'globbing'. Hvis filnavnene ikke følger et mønster, skal du bare angive dem inden for krøllede parenteser (

-T '{file1.txt,image27.jpg}'

). Omvendt, hvis de har lignende navne, skal du anvende den samme logik fra Tumblr -downloadeksemplet og bruge firkantede parenteser (

-T 'photo[1-50].jpg'

). Sørg for at angive den fulde sti til filerne, hvis de ikke er i dit nuværende bibliotek.

4. Kontroller, om et websted er nede

Vi har alle været der. Et websted, du absolut har brug for, stopper pludselig med at fungere. Så indlæses ikke Facebook. Står du over for et ægte første verdens problem, hvad gør du?

Du kan Google det, bede en ven om at teste det for dig eller bruge et af de enkelte serveringswebsteder, der fortæller dig, om et websted er nede. Eller du kan bare fyre op for terminalen og køre cURL:

curl -Is https://www.twitter.com -L | grep HTTP/

Skiftet med store bogstaver (-I) kontrollerer HTTP -headeren på en webside, og indstillingen -L (placering) tilføjes for at få cURL til at følge omdirigeringer. Det betyder, at du ikke behøver at skrive den fulde Facebook -URL; bare skriv facebook.com og cURL tager sig af resten takket være -L. Hvis der er nogen omdirigeringer, vises de med deres egen HTTP -status.

Beskeden, vi er interesseret i, er '200 OK', hvilket betyder, at alt er fint med webstedet. Hvis det virkelig er nede, ser du sådan noget som dette:

HTTP -statuskoder er kun så informative, som din forståelse af dem tillader det. Denne metode er ikke helt pålidelig, fordi et websted kan returnere en statuskode, der angiver en vellykket behandlet anmodning, men alligevel vil den være tom, når du åbner den i browseren. Alligevel bør det i de fleste tilfælde svare til den virkelige situation og fortælle dig, hvad der er op eller ned.

5. Udvid forkortede webadresser

Forkortede webadresser er ikke i sig selv dårlige. Uden dem ville det være svært at dele links på Twitter og andre karakterbegrænsede sociale netværk. Nogle URL -afkortningstjenester tilbyder også nyttige analyser. Men der er altid en risiko for, at nogen forsøger at skjule ondsindet indhold bag en forkortet URL, eller at en trold skjuler en Rickroll (eller noget meget, meget værre). Hvis du af en eller anden grund føler dig mistroisk over for en forkortet webadresse, kan cURL hjælpe dig med at udvide den og finde ud af, hvor den præcist fører til:

curl -sIL http://buff.ly/1lTcZSM | grep ^Location;

eller

curl -sI http://buff.ly/1lTcZSM | sed -n 's/Location: *//p';

Du kan kombinere cURL med

grep

eller

sed

; den største forskel er i formateringen. Sed er et af de værktøjer, hver Linux -bruger bør kende, og det supplerer cURL i dette og et par andre brugssager. Lad os ikke glemme, at cURL kan downloade filer fra en forkortet URL (forudsat at URL'en faktisk peger på en fil):

curl -L -o filename.txt http://short.url

Syntaksen er den samme som for andre cURL -downloads, og indstillingen -L tager sig af omdirigering fra en forkortet URL til den originale.

6. Vis din påskønnelse for ASCII Art

Ganske vist er dette ikke særlig nyttigt, men det ser cool ud. Med hjælp fra

pv

, et værktøj til overvågning af dataforløb, kan cURL vise ASCII -animationer i terminalen.

curl -s http://artscene.textfiles.com/vt100/wineglas.vt | pv -L9600 -q

Indstillingerne -s og -q holder begge kommandoer i lydløs (stille) tilstand. Indstillingen -L refererer her til pv -kommandoen og lader dig ændre dataoverførselshastigheden i bytes per sekund. Med andre ord, hvis animationen bevæger sig for hurtigt eller for langsomt, kan du prøve at spille med det nummer. Bortset fra animationer kan cURL vise almindelig, statisk ASCII -kunst:

Internettet har masser af websteder med alle former for ASCII-kunst derude: fra fantastisk detaljerede stykker i høj kvalitet til underligt, fjollet og endda NSFW-materiale. Denne digitale kunstteknik går tilbage til 1960'erne, og i dag er den en del af internetkultur og historie, der holdes i live i talrige samlinger og værktøjer, der lader dig konvertere tekst og billeder til ASCII art . Du kan bruge den til at dekorere din terminal eller til at snyde dine venner - uanset hvad der flyder din båd.

7. Eksperimenter med sociale medier

At bruge sociale medier fra terminalen er ikke noget nyt-vi har allerede vist dig kommandolinj Twitter-klienter til Linux. Selvom du sandsynligvis ikke vil skifte til cURL som dit online socialiseringsværktøj, er det godt at vide, at du kan sende til Facebook med det, som beskrevet her. Du vil bemærke, at teknisk set gør cURL det ikke alene; en kombination af værktøjer får jobbet gjort.

Hvad angår Twitter, var det tidligere muligt at styre det direkte fra terminalen med cURL. Derefter ændrede Twitter sin API, og nu er der en særlig cURL -klient til Twitter kaldet Twurl. Det er ikke det letteste at bruge, især for en nybegynder, og det kræver godkendelse med Twitter -annonceplatformen. Dette giver mening, hvis du er en udvikler eller en avanceret bruger, men ikke så meget, hvis du bare vil tweet fra kommandolinjen. Alligevel er der måder at have det sjovt med Twitter. Du kan bruge cURL til at kontrollere brugerens antal følgere:

curl -s https://twitter.com/username | grep -o '[0-9,]* Followers';

8. Find din eksterne IP -adresse

Det er let nok at finde din lokale IP -adresse - bare kør

nest mini vs google home mini
ifconfig

eller kontakt din netværksadministrationsapplet. For den eksterne IP bruger de fleste specialiserede websteder til at indhente disse oplysninger. Alligevel er nogle ting bare lettere at gøre fra terminalen, og dette kan være en af ​​dem. Du kan også oprette et alias til cURL -kommandoen. Der er flere onlinetjenester, der samarbejder med cURL:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http://whatismyip.akamai.com
curl ifconfig.me
curl -s icanhazip.com

Nogle kan fortælle dig mere om enhver ekstern IP -adresse:

curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

Alt du skal gøre er at vælge en service. Hvis du er ubeslutsom, skal du bare inkludere dem alle i dit alias som backup -løsninger.

9. Indsæt tekst og del billeder

At bryde din arbejdsgang er aldrig godt for produktivitet og fokus. Hvis du gør det meste af dit arbejde i terminalen, kan det være upraktisk, hvis ikke irriterende, at skifte til en browser bare for at dele et par filer. Heldigvis blev nogle pastebin- og fildelingstjenester født til at arbejde med cURL, så du kan bruge dem direkte fra terminalen uden en brugerkonto.

Clbin og Sprunge.us har lignende syntaks. Med Clbin rør du en lokal fil eller output fra en kommando, og den returnerer et link til din uploadede tekst:

cat textfile.txt | curl -F 'clbin=<-' https://clbin.com

Det understøtter også billeduploads (PNG, JPG og GIF):

curl -F 'clbin=@image.png' https://clbin.com

Hvis du vil bruge Sprunge.us i stedet, skal du skrive:

cat textfile.txt | curl -F 'sprunge=<-' http://sprunge.us

Sprunge.us understøtter ikke billeduploads i øjeblikket.

Ix.io er baseret på det samme princip som de to foregående tjenester med et par ekstra funktioner. For at uploade en fil skal du skrive:

cat file.txt | curl -F 'f:1=<-' ix.io

eller

curl -F 'f:1=@file.txt' ix.io

Når du får et link til den uploadede tekst, kan du ændre dens webadresse for at vise syntaksfremhævelse (med

ix.io/yourpaste+

,

ix.io/yourpaste/

, eller

ix.io/yourpaste/language

for et specifikt script- eller programmeringssprog). Det er også muligt at begrænse, hvor mange gange et link kan ses ved at ændre tallet efter

'read:1'

værdi:

cat file.txt | curl -F 'f:1=<-' -F 'read:1=2' ix.io

Ix.io er primært beregnet til tekstbaserede filer, f.eks. Kildekode eller systemlogfiler. Hvis du vil uploade en række forskellige filformater, skal du bruge Transfer.sh . Det understøtter billeder, filkryptering og holder dine filer online i to uger. Du kan uploade op til 5 GB data til Transfer.sh. Sådan gør du:

curl --upload-file bunnies.jpg https://transfer.sh/bunnies.jpg

Du kan frit definere navnet på den uploadede fil. For at uploade flere filer skal du liste dem efter hinanden med -F -indstillingen:

curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

10. Marker ulæst mail på GMail

Der er et stort potentiale for at blive låst op i cURL, hvis du er villig til at dykke ned i detaljer om e-mail-relaterede protokoller (SMTP, POP, IMAP). For en hurtig e -mail -check vil denne kommando gøre. Det analyserer dit GMail -feed og formaterer output (e -mail -emne og afsender) med

tr

,

awk

,

sed

og/eller

grep

kommandoer. Bemærk, at denne løsning er ekstremt usikker, fordi den udsætter dine loginoplysninger for alle med adgang til din terminal. Den første version viser afsenderens navn, mens den anden udskriver kun ulæste e -mail -emner:


curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | tr -d '
' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n 's/

curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | grep -oPm1 '(?<=)[^<]+' | sed '1d'

Hvad kan CURL ellers gøre?

cURL bruges sjældent som en selvstændig kommando. De fleste mennesker bruger det som en del af et script eller en applikation. Alligevel er det muligt at oprette praktiske one-liners med cURL, som vi har demonstreret her. Mange af disse eksempler blev tilpasset fra CommandLineFu, en fantastisk kilde til smarte kommandolinjehacks, og du bør ikke betragte dem som sten.

Med tilstrækkelig viden og erfaring kan vi ændre hver kommando, formatere den anderledes eller helt erstatte den med en bedre løsning. Kan du forbedre vores foreslåede cURL -kommandoer? Kender du til andre seje anvendelser til cURL? Del dine tips i kommentarerne.

Billedkreditter: Inde i introduktionen til kommandolinjen af Osama Khalid via Flickr.

Del Del Tweet E -mail Slet disse Windows -filer og mapper for at frigøre diskplads

Har du brug for at rydde diskplads på din Windows -computer? Her er Windows -filer og mapper, der sikkert kan slettes for at frigøre diskplads.

Læs Næste
Relaterede emner
  • Linux
  • FTP
  • Download Management
  • Terminal
Om forfatteren Ivana Isadora Devcic(24 artikler udgivet)

Ivana Isadora er freelance skribent og oversætter, Linux -elsker og KDE fangirl. Hun understøtter og promoverer gratis og open source -software, og hun leder altid efter friske, innovative apps. Find ud af, hvordan du kommer i kontakt her .

Mere fra Ivana Isadora Devcic

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere