Get cURLy: 10 handige dingen die je kunt doen met cURL

Get cURLy: 10 handige dingen die je kunt doen met cURL

Wanneer we beginnen te leren over opdrachtregelprogramma's, hebben we de neiging om ze als eenmalig te beschouwen. Dat is je geleerd





cat

drukt bestandsinhoud af,





ls

geeft een overzicht van alle items in een map, en





du

toont het gebruik van de schijfruimte. Veel opdrachtregelprogramma's hebben echter tientallen opties, allemaal netjes beschreven in hun:

man

bestanden. Sommigen van hen kunnen wonderen doen in combinatie met andere commando's.



Het is natuurlijk onredelijk om te verwachten dat iemand elke optie moet onthouden. Met dat in gedachten is het goed om af en toe onze kennis van Linux-commando's , omdat u er nieuwe toepassingen voor kunt ontdekken.

Deze keer richten we ons op Krul , een tool voor het overbrengen van gegevens via een aantal internetprotocollen zoals HTTP(S), FTP, Telnet, LDAP, IMAP, POP3, SMTP en meer.





In vereenvoudigde bewoordingen voert cURL verschillende verzoeken uit van een client naar een server, waarbij een verbinding tussen hen tot stand wordt gebracht door middel van een specifiek protocol en de bijbehorende methoden. Als HTTP-client kan cURL bijvoorbeeld een verzoek verzenden om inhoud te bekijken of te downloaden (GET-verzoekmethode), of om inhoud via een formulier op een website te plaatsen (POST-verzoekmethode). Met veel webapplicaties en -services kan cURL communiceren met hun API's (Application Programming Interface).

Omdat hun functionaliteit tot op zekere hoogte overlapt, worden cURL en wget vaak met elkaar vergeleken. Beide tools kunnen inhoud van internet downloaden, maar wget ondersteunt recursieve downloads, webscraping en voelt over het algemeen eenvoudiger te gebruiken. Als u alleen bestanden van de terminal wilt downloaden, is wget waarschijnlijk een betere keuze.





Aan de andere kant, als je geavanceerde HTTP-authenticatiemethoden nodig hebt en bestanden wilt uploaden en downloaden, is het de moeite waard om te leren hoe je cURL kunt gebruiken. Ook ondersteunt wget alleen HTTP(S) en FTP, terwijl cURL een breed scala aan protocollen dekt. Dit betekent dat cURL meer coole dingen kan doen - en hier zijn tien voorbeelden om het te bewijzen.

1. Download het weerbericht

Als iemand je zou zeggen om het weer vanaf de terminal te bekijken, zou je saaie cijfers verwachten. Niet met deze opdracht.

curl http://wttr.in/LOCATION

De informatie wordt geleverd door een CLI-toepassing genaamd we gaan , maar als u het niet wilt installeren, kan cURL de voorspelling ophalen van zijn webfrontend wttr.in. Het enige dat nodig is, is de locatie waarvoor u de prognose wilt. Typ gewoon de naam van een stad, de luchthavencode of uw huidige IP-adres. Een nieuwe functie toont de informatie over maanstanden als je typt:

curl wttr.in/Moon

2. Bestanden downloaden en downloads hervatten

Het downloaden van bestanden doen we meestal in de browser. Soms wil je een downloadmanager gebruiken; bijvoorbeeld wanneer u meerdere bestanden tegelijk downloadt of wanneer u downloads wilt pauzeren. Hoewel cURL geen populaire keuze is voor gelijktijdige downloads (in plaats daarvan wordt wget aanbevolen), kun je het toch voor dat doel gebruiken door de krachtige opties (switches) te combineren. Eerst heb je een directe link naar het bestand nodig. In dit voorbeeld gebruiken we een pdf van het tijdschrift Linux Voice.

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

De O-schakelaar in hoofdletters (-O) zorgt ervoor dat cURL het bestand opslaat met de standaard bestandsnaam (meestal die van de link zelf). Als je het onder een andere naam wilt opslaan, gebruik je kleine letters o gevolgd door de nieuwe naam:

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

Standaard worden de bestanden opgeslagen in de huidige map (controleer deze met de

pwd

opdracht). Om ze ergens anders op te slaan, geeft u het pad op na de schakeloptie -o. Met de -C - schakelaar kan cURL de download hervatten. Je zou het pauzeren door op Ctrl+C in de terminal te drukken, en hervatten door dezelfde downloadopdracht opnieuw uit te voeren:

cURL geeft de downloadvoortgang weer in een tabelachtige indeling, met kolommen met informatie over downloadsnelheid, totale bestandsgrootte, verstreken tijd en meer. Als je dit niet leuk vindt, kun je kiezen voor een eenvoudigere voortgangsbalk door -# of --progress-bar toe te voegen aan je cURL-opdracht.

Om meerdere bestanden tegelijk te downloaden, vermeldt u de links een voor een:

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

Met behulp van andere opdrachtregelprogramma's kunnen we alle PNG- en JPG-afbeeldingen batchgewijs downloaden van een 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

In dit geval,

cut

en

grep

verzamel informatie over bestandsnamen en formatteer deze zodat alleen bestanden met gespecificeerde extensies worden weergegeven. Als u de opdracht uitvoert zonder de laatste pijp:

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

u krijgt alleen een lijst met bestanden die aan onze criteria voldoen, maar ze worden niet daadwerkelijk gedownload. cURL kan een lijst met afbeeldingen van een reeks pagina's krijgen, op voorwaarde dat de blog standaard paginering gebruikt:

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

U kunt het bereik wijzigen door de cijfers tussen vierkante haken te wijzigen. Nogmaals, deze opdracht zou alleen de afbeeldingen weergeven; om ze te downloaden, voert u de volledige opdracht uit in de map waar u de afbeeldingen wilt opslaan:

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

Als je goed thuis bent in normale uitdrukkingen , kunt u het uiterlijk en de efficiëntie van deze opdracht verbeteren en het resultaat in de opmerkingen delen.

3. Beheer bestanden op een FTP-server

We horen tegenwoordig niet veel over FTP, maar dat betekent niet dat het achterhaald is. In feite delen veel open source-projecten en Linux-distributies hun software op FTP-servers. Omdat FTP wordt ondersteund door cURL, kunt u het gebruiken als een eenvoudige FTP-client om bestanden te uploaden en downloaden. U kunt door de bestanden op een FTP-server bladeren door de mappen te openen:

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

Om een ​​submap in te voeren, typt u de naam gevolgd door een schuine streep (/).

Het downloaden van bestanden is vergelijkbaar met HTTP-downloads die in de vorige sectie zijn beschreven. U kunt -o of -O gebruiken en -C - toevoegen als u downloads wilt pauzeren.

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

Hoewel cURL geen recursieve downloads ondersteunt (onthoud, wget wel!), kan het toch een reeks bestanden tegelijk downloaden. De enige voorwaarde is dat de bestandsnamen een patroon volgen. We kunnen bijvoorbeeld downloaden van een wallpaper-hostingserver waar de wallpapers allemaal 'wallpaperNUMBER' heten:

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

Sommige FTP-servers vereisen verificatie voordat u bestanden kunt downloaden. cURL laat je inloggen met de -u (gebruiker) optie:

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

U kunt ook bestanden uploaden naar een FTP-server met de -T (overdracht) optie:

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

Hier kunt u ook meerdere bestanden als een bereik definiëren. Deze functie wordt soms 'globbing' genoemd. Als de bestandsnamen geen patroon volgen, vermeld ze dan gewoon tussen accolades (

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

). Omgekeerd, als ze vergelijkbare namen hebben, past u dezelfde logica toe uit het Tumblr-downloadvoorbeeld en gebruikt u vierkante haken (

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

). Zorg ervoor dat u het volledige pad naar de bestanden opgeeft als ze zich niet in uw huidige map bevinden.

4. Controleer of een website niet beschikbaar is

We hebben het allemaal weleens meegemaakt. Een website die je absoluut nodig hebt, werkt ineens niet meer. Dan laadt Facebook niet. Wat doe je als je wordt geconfronteerd met een echt eerstewereldprobleem?

Je zou het kunnen googlen, een vriend vragen om het voor je te testen, of een van die single-serving sites gebruiken die je vertellen of een website niet beschikbaar is. Of je kunt gewoon de terminal starten en cURL uitvoeren:

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

De schakelaar I in hoofdletters (-I) controleert de HTTP-header van een webpagina en de optie -L (locatie) is toegevoegd om ervoor te zorgen dat cURL omleidingen volgt. Dit betekent dat u niet de volledige Facebook-URL hoeft te typen; Schrijf gewoon facebook.com en cURL zorgt voor de rest dankzij -L. Als er omleidingen zijn, worden deze weergegeven met hun eigen HTTP-status.

Het bericht waarin we geïnteresseerd zijn is '200 OK', wat betekent dat alles in orde is met de website. Als het inderdaad niet werkt, zie je zoiets als dit:

HTTP-statuscodes zijn slechts zo informatief als uw begrip ervan toelaat. Deze methode is niet volledig betrouwbaar, omdat een website een statuscode kan retourneren die aangeeft dat een aanvraag met succes is verwerkt, maar deze is leeg wanneer u deze in de browser opent. Toch moet het in de meeste gevallen overeenkomen met de werkelijke situatie en u laten weten wat er aan de hand is - of omlaag.

5. Vouw Verkorte URL's uit

Verkorte URL's zijn niet per definitie slecht. Zonder hen zou het moeilijk zijn om links op Twitter en andere sociale netwerken met beperkte tekens te delen. Sommige URL-verkortingsservices bieden ook nuttige analyses. Maar er is altijd een risico dat iemand kwaadaardige inhoud probeert te verbergen achter een verkorte URL, of dat een trol een Rickroll maskeert (of iets veel, veel ergers). Als je ooit om wat voor reden dan ook achterdochtig bent over een verkorte URL, kan cURL je helpen deze uit te breiden en erachter te komen waar deze precies naar toe leidt:

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

of

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

Je kunt cURL combineren met

grep

of

sed

; het belangrijkste verschil zit in de opmaak. Sed is een van die tools die elke Linux-gebruiker zou moeten kennen, en het is een aanvulling op cURL in deze en een paar andere use-cases. Laten we niet vergeten dat cURL bestanden kan downloaden van een verkorte URL (op voorwaarde dat de URL daadwerkelijk naar een bestand verwijst):

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

De syntaxis is hetzelfde als bij andere cURL-downloads, en de -L-optie zorgt voor de omleiding van een verkorte URL naar de originele.

6. Toon uw waardering voor ASCII-kunst

Toegegeven, dit is niet bijzonder handig, maar het ziet er cool uit. Met de hulp van

pv

, een hulpprogramma voor het bewaken van de voortgang van gegevens, kan cURL ASCII-animaties in de terminal weergeven.

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

De -s en -q opties houden beide commando's in de stille (stille) modus. De optie -L verwijst hier naar het pv-commando en stelt u in staat de overdrachtssnelheid van gegevens in bytes per seconde te wijzigen. Met andere woorden, als de animatie te snel of te langzaam gaat, probeer dan met dat nummer te spelen. Afgezien van animaties, kan cURL gewone, statische ASCII-kunst weergeven:

Het web heeft tal van websites met allerlei soorten ASCII-kunst: van verbazingwekkend gedetailleerde stukken van hoge kwaliteit tot raar, dwaas en zelfs NSFW-materiaal. Deze digitale kunsttechniek dateert uit de jaren zestig en maakt tegenwoordig deel uit van de internetcultuur en -geschiedenis, levend gehouden in talloze collecties en tools waarmee je converteer tekst en afbeeldingen naar ASCII-kunst . Je kunt het gebruiken om je terminal te versieren of om je vrienden in de maling te nemen - wat je boot ook drijft.

7. Experimenteer met sociale media

Het gebruik van sociale media vanaf de terminal is niets nieuws -- we hebben u al command-line Twitter-clients voor Linux laten zien. Hoewel je waarschijnlijk niet overschakelt naar cURL als je online socialisatietool, is het goed om te weten dat je ermee op Facebook kunt posten, zoals hier beschreven. Je zult merken dat, technisch gezien, cURL het niet alleen doet; een combinatie van tools klaart de klus.

Wat Twitter betreft, was het vroeger mogelijk om het rechtstreeks vanaf de terminal te beheren met cURL. Toen veranderde Twitter zijn API en nu is er een speciale cURL-client voor Twitter genaamd Twurl. Het is niet het gemakkelijkste om te gebruiken, vooral niet voor een beginner, en het vereist authenticatie met het Twitter-advertentieplatform. Dit is logisch als u een ontwikkelaar of een gevorderde gebruiker bent, maar niet zozeer als u alleen vanaf de opdrachtregel wilt tweeten. Toch zijn er manieren om plezier te hebben met Twitter. U kunt cURL gebruiken om het aantal volgers van een gebruiker te controleren:

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

8. Vind uw externe IP-adres

Het vinden van uw lokale IP-adres is eenvoudig genoeg - voer gewoon uit

externe harde schijf van windows niet zichtbaar
ifconfig

of raadpleeg uw Network Management-applet. Voor het externe IP gebruiken de meeste mensen gespecialiseerde websites om deze informatie te verkrijgen. Toch zijn sommige dingen gewoon gemakkelijker te doen vanaf de terminal , en dit kan er een van zijn. U kunt ook een alias maken voor de opdracht cURL. Er zijn verschillende online diensten die samenwerken met cURL:

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

Sommigen kunnen u meer vertellen over elk extern IP-adres:

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

Het enige wat u hoeft te doen is een dienst kiezen. Als u besluiteloos bent, kunt u ze gewoon allemaal in uw alias opnemen als back-upoplossingen.

9. Tekst plakken en afbeeldingen delen

Het doorbreken van uw workflow is nooit goed voor productiviteit en focus. Als u het meeste van uw werk in de terminal doet, kan het onpraktisch, zo niet vervelend zijn om naar een browser over te schakelen om slechts een paar bestanden te delen. Gelukkig zijn sommige diensten voor het delen van bestanden en het delen van bestanden geboren om met cURL te werken, dus je kunt ze rechtstreeks vanaf de terminal gebruiken, zonder een gebruikersaccount.

Clbin en Sprunge.us vergelijkbare syntaxis hebben. Met Clbin pijp je een lokaal bestand of de uitvoer van een commando, en het retourneert een link naar je geüploade tekst:

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

Het ondersteunt ook het uploaden van afbeeldingen (PNG, JPG en GIF):

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

Als u in plaats daarvan Sprunge.us wilt gebruiken, typt u:

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

Sprunge.us biedt momenteel geen ondersteuning voor het uploaden van afbeeldingen.

Ix.io is gebaseerd op hetzelfde principe als de vorige twee services, met een paar extra functies. Om een ​​bestand te uploaden, typt u:

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

of

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

Wanneer u een link naar de geüploade tekst krijgt, kunt u de URL wijzigen om syntaxisaccentuering weer te geven (met

ix.io/yourpaste+

,

ix.io/yourpaste/

, of

ix.io/yourpaste/language

voor een specifieke script- of programmeertaal). Het is ook mogelijk om te beperken hoe vaak een link kan worden bekeken door het nummer na de . te wijzigen

'read:1'

waarde:

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

Ix.io is voornamelijk bedoeld voor op tekst gebaseerde bestanden zoals broncode of systeemlogboeken. Als u verschillende bestandsindelingen wilt uploaden, gebruikt u Overdracht.sh . Het ondersteunt afbeeldingen, bestandscodering en houdt uw bestanden twee weken online. U kunt tot 5 GB aan gegevens uploaden naar Transfer.sh. Hier is hoe:

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

U bent vrij om de naam van het geüploade bestand te definiëren. Om meerdere bestanden te uploaden, vermeldt u ze een voor een met de -F-optie:

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

10. Vink ongelezen e-mail aan op Gmail

Er is een enorm potentieel om te worden ontgrendeld in cURL als je bereid bent om je te verdiepen in details van e-mailgerelateerde protocollen (SMTP, POP, IMAP). Voor een snelle e-mailcontrole is deze opdracht voldoende. Het parseert uw GMail-feed en formatteert de uitvoer (e-mailonderwerp en afzender) met:

tr

,

awk

,

sed

en/of

grep

commando's. Merk op dat deze oplossing extreem onveilig is omdat het uw inloggegevens blootstelt aan iedereen met toegang tot uw terminal. De eerste versie toont de naam van de afzender, terwijl de tweede versie alleen ongelezen e-mailonderwerpen afdrukt:


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'

Wat kan cURL nog meer doen?

cURL wordt zelden gebruikt als een op zichzelf staand commando. De meeste mensen gebruiken het als onderdeel van een script of een applicatie. Toch is het mogelijk om praktische oneliners te maken met cURL, zoals we hier hebben aangetoond. Veel van deze voorbeelden zijn overgenomen van CommandLineFu , een fantastische bron van slimme commandoregelhacks, en je moet ze niet als vaststaand beschouwen.

Met voldoende kennis en ervaring kunnen we elk commando aanpassen, anders formatteren of volledig vervangen door een betere oplossing. Kun je onze voorgestelde cURL-opdrachten verbeteren? Kent u nog andere coole toepassingen voor cURL? Deel je tips in de comments.

Afbeeldingscredits: Inside Inleiding tot de opdrachtregel door Osama Khalid via Flickr.

Deel Deel Tweeten E-mail Verwijder deze Windows-bestanden en -mappen om schijfruimte vrij te maken

Wilt u schijfruimte op uw Windows-computer vrijmaken? Hier zijn de Windows-bestanden en -mappen die veilig kunnen worden verwijderd om schijfruimte vrij te maken.

Lees volgende
Gerelateerde onderwerpen
  • Linux
  • FTP
  • Downloadbeheer
  • Terminal
Over de auteur Ivana Isadora Devcic(24 artikelen gepubliceerd)

Ivana Isadora is een freelance schrijver en vertaler, Linux-liefhebber en KDE-fangirl. Ze ondersteunt en promoot gratis en open source software en is altijd op zoek naar nieuwe, innovatieve apps. Ontdek hoe u in contact kunt komen hier .

Meer van Ivana Isadora Devcic

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren