Zdobądź cURLy: 10 przydatnych rzeczy, które możesz zrobić z cURL

Zdobądź cURLy: 10 przydatnych rzeczy, które możesz zrobić z cURL

Kiedy zaczynamy uczyć się o narzędziach wiersza poleceń, postrzegamy je jako jednokierunkowe. Nauczono cię tego





cat

drukuje zawartość pliku,





ls

wyświetla wszystkie pozycje w katalogu i





du

pokazuje wykorzystanie miejsca na dysku. Jednak wiele narzędzi wiersza poleceń ma dziesiątki opcji, wszystkie starannie opisane w ich

man

pliki. Niektóre z nich mogą zdziałać cuda w połączeniu z innymi poleceniami.



Oczywiście nierozsądnie jest oczekiwać, że każdy powinien pamiętać o każdej opcji. Mając to na uwadze, dobrze jest od czasu do czasu odświeżyć nasze znajomość poleceń Linuksa , ponieważ możesz odkryć dla nich nowe zastosowania.

Tym razem skupiamy się na kędzior , narzędzie do przesyłania danych za pośrednictwem wielu protokołów internetowych, takich jak HTTP(S), FTP, Telnet, LDAP, IMAP, POP3, SMTP i innych.





W uproszczeniu cURL wykonuje różne żądania od klienta do serwera, nawiązując połączenie między nimi za pomocą określonego protokołu i powiązanych z nim metod. Na przykład jako klient HTTP cURL może wysłać żądanie wyświetlenia lub pobrania treści (metoda żądania GET) lub opublikowania treści za pośrednictwem formularza na stronie internetowej (metoda żądania POST). Wiele aplikacji i usług internetowych pozwala cURL na interakcję z ich API (interfejs programowania aplikacji).

Ponieważ ich funkcjonalność do pewnego stopnia się pokrywa, cURL i wget są często porównywane ze sobą. Oba narzędzia mogą pobierać treści z Internetu, ale wget obsługuje pobieranie rekurencyjne, web scraping i ogólnie jest prostszy w użyciu. Jeśli chcesz po prostu pobierać pliki z terminala , wget jest prawdopodobnie lepszym wyborem.





Z drugiej strony, jeśli potrzebujesz zaawansowanych metod uwierzytelniania HTTP i chcesz przesyłać pliki, a także je pobierać, warto nauczyć się cURL. Ponadto wget obsługuje tylko HTTP(S) i FTP, podczas gdy cURL obejmuje szeroki zakres protokołów. Oznacza to, że cURL może robić więcej fajnych rzeczy – a oto dziesięć przykładów, które to potwierdzają.

1. Pobierz raport o pogodzie

Gdyby ktoś powiedział ci, abyś sprawdził pogodę z terminala, spodziewałbyś się nudnych liczb. Nie z tym poleceniem.

curl http://wttr.in/LOCATION

Informacje są dostarczane przez aplikację CLI o nazwie idziemy , ale jeśli nie chcesz go instalować, cURL może pobrać prognozę ze swojego interfejsu internetowego wttr.in. Wszystko czego potrzebuje to lokalizacja, dla której chcesz uzyskać prognozę. Wystarczy wpisać nazwę miasta, kod lotniska lub aktualny adres IP. Nowa funkcja wyświetla informacje o fazach księżyca, jeśli wpiszesz:

curl wttr.in/Moon

2. Pobierz pliki i wznów pobieranie

Pobieranie plików to coś, co zwykle robimy w przeglądarce. Czasami będziesz chciał użyć menedżera pobierania; na przykład podczas pobierania kilku plików jednocześnie lub gdy chcesz wstrzymać pobieranie. Chociaż cURL nie jest popularnym wyborem do jednoczesnego pobierania (zalecany jest wget), nadal możesz go używać do tego celu, łącząc jego potężne opcje (przełączniki). Najpierw potrzebujesz bezpośredniego linku do pliku. W tym przykładzie użyjemy pliku PDF magazynu Linux Voice.

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

Przełącznik O (-O) pisany wielkimi literami powoduje, że cURL zapisuje plik pod domyślną nazwą pliku (zwykle z samego linku). Jeśli chcesz zapisać go pod inną nazwą, użyj małej litery o, a następnie nowej nazwy:

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

Domyślnie pliki są zapisywane w bieżącym katalogu (sprawdź to za pomocą

pwd

Komenda). Aby zapisać je w innym miejscu, podaj ścieżkę po przełączniku -o. Przełącznik -C - umożliwia cURL wznowienie pobierania. Zatrzymasz go, naciskając Ctrl + C w terminalu, i wznowisz, ponownie uruchamiając to samo polecenie pobierania:

cURL wyświetla postęp pobierania w formacie podobnym do tabeli, z kolumnami zawierającymi informacje o prędkości pobierania, całkowitym rozmiarze pliku, upływającym czasie i nie tylko. Jeśli ci się to nie podoba, możesz wybrać prostszy pasek postępu, dodając -# lub --progress-bar do polecenia cURL.

Aby pobrać wiele plików naraz, po prostu wymień linki jeden po drugim:

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

Za pomocą innych narzędzi wiersza poleceń możemy pobrać wsadowo wszystkie obrazy PNG i JPG z bloga Tumblr:

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

W tym przypadku,

cut

oraz

grep

zbierać informacje o nazwach plików i formatować je tak, aby wyświetlane były tylko pliki z określonymi rozszerzeniami. Jeśli uruchomisz polecenie bez ostatniego potoku:

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

otrzymasz po prostu listę plików, które spełniają nasze kryteria, ale tak naprawdę nie zostaną one pobrane. cURL może uzyskać listę obrazów z różnych stron, pod warunkiem, że blog używa standardowej paginacji:

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

Możesz modyfikować zakres, zmieniając liczby w nawiasach kwadratowych. Ponownie, to polecenie wyświetli tylko obrazy; aby je pobrać, uruchom pełną komendę w katalogu, w którym chcesz zapisać obrazy:

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

Jeśli jesteś dobrze zorientowany w wyrażenia regularne , możesz poprawić wygląd i wydajność tego polecenia, a wyniki udostępnić w komentarzach.

3. Zarządzaj plikami na serwerze FTP

Ostatnio niewiele słyszymy o FTP, ale to nie znaczy, że jest przestarzały. W rzeczywistości wiele projektów open source i dystrybucji Linuksa udostępnia swoje oprogramowanie na serwerach FTP. Ponieważ FTP jest obsługiwany przez cURL, możesz go używać jako prostego klienta FTP do przesyłania i pobierania plików. Możesz przeglądać pliki na serwerze FTP, uzyskując dostęp do katalogów:

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

Aby wprowadzić podkatalog, wpisz jego nazwę, a następnie ukośnik (/).

Pobieranie plików jest podobne do pobierania HTTP opisanego w poprzedniej sekcji. Możesz użyć -o lub -O i dodać -C - jeśli chcesz wstrzymać pobieranie.

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

Chociaż cURL nie obsługuje pobierania rekurencyjnego (pamiętaj, wget to robi!), nadal może pobierać jednocześnie szereg plików. Jedynym warunkiem jest to, że nazwy plików są zgodne ze wzorcem. Na przykład możemy pobrać z serwera hostującego tapety, na którym wszystkie tapety mają nazwę „wallpaperNUMBER”:

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

Niektóre serwery FTP wymagają uwierzytelnienia przed pobraniem plików. cURL pozwala zalogować się z opcją -u (użytkownik):

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

Możesz również przesłać pliki na serwer FTP za pomocą opcji -T (transfer):

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

Tutaj możesz również zdefiniować wiele plików jako zakres. Ta funkcja jest czasami nazywana „globbingiem”. Jeśli nazwy plików nie są zgodne ze wzorcem, po prostu umieść je w nawiasach klamrowych (

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

). I odwrotnie, jeśli mają podobne nazwy, zastosuj tę samą logikę z przykładu pobierania Tumblr i użyj nawiasów kwadratowych (

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

). Upewnij się, że podałeś pełną ścieżkę do plików, jeśli nie ma ich w bieżącym katalogu.

4. Sprawdź, czy strona internetowa nie działa

Wszyscy tam byliśmy. Strona, której absolutnie potrzebujesz, nagle przestaje działać. Wtedy Facebook się nie załaduje. Co robisz w obliczu prawdziwego problemu pierwszego świata?

Możesz go wygooglować, poprosić znajomego o przetestowanie go za Ciebie lub skorzystać z jednej z tych witryn z pojedynczą obsługą, które informują, czy witryna nie działa. Możesz też po prostu odpalić terminal i uruchomić cURL:

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

Wielkie I przełączam (-I) sprawdza nagłówek HTTP strony internetowej, a opcja -L (lokalizacja) jest dodawana, aby cURL podążał za przekierowaniami. Oznacza to, że nie musisz wpisywać pełnego adresu URL Facebooka; tylko napisz facebook.com a cURL zajmie się resztą dzięki -L. Jeśli istnieją jakiekolwiek przekierowania, zostaną one wyświetlone z własnym statusem HTTP.

Interesujący nas komunikat to „200 OK”, co oznacza, że ​​strona jest w porządku. Jeśli rzeczywiście nie działa, zobaczysz coś takiego:

Kody stanu HTTP są tak informacyjne, jak tylko pozwala na to ich zrozumienie. Ta metoda nie jest w pełni niezawodna, ponieważ strona internetowa może zwrócić kod statusu wskazujący na pomyślnie przetworzone żądanie, jednak po otwarciu w przeglądarce będzie on pusty. Mimo to w większości przypadków powinien odpowiadać rzeczywistej sytuacji i informować o tym, co się dzieje.

5. Rozwiń Skrócone adresy URL

Skrócone adresy URL nie są z natury złe. Bez nich trudno byłoby udostępniać linki na Twitterze i innych ograniczonych do znaków sieciach społecznościowych. Niektóre usługi skracania adresów URL oferują również przydatne analizy. Ale zawsze istnieje ryzyko, że ktoś próbuje ukryć złośliwą zawartość za skróconym adresem URL lub że troll maskuje Rickrolla (lub coś znacznie, znacznie gorszego). Jeśli kiedykolwiek poczujesz podejrzliwość wobec skróconego adresu URL z jakiegokolwiek powodu, cURL może pomóc Ci go rozwinąć i dowiedzieć się, dokąd dokładnie prowadzi:

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

lub

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

Możesz połączyć cURL z

grep

lub

sed

; główna różnica polega na formatowaniu. Sed jest jednym z tych narzędzi, które każdy użytkownik Linuksa powinien znać i uzupełnia cURL w tym i kilku innych przypadkach użycia. Nie zapominajmy, że cURL może pobierać pliki ze skróconego adresu URL (pod warunkiem, że adres URL faktycznie wskazuje na plik):

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

Składnia jest taka sama jak w przypadku innych pobrań cURL, a opcja -L zajmuje się przekierowaniem ze skróconego adresu URL do oryginalnego.

6. Okaż swoje uznanie dla sztuki ASCII

Wprawdzie nie jest to szczególnie przydatne, ale wygląda fajnie. Z pomocą

pv

, narzędzie do monitorowania postępu danych, cURL może wyświetlać animacje ASCII w terminalu.

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

Opcje -s i -q utrzymują oba polecenia w trybie cichym (cichym). Opcja -L w tym przypadku odnosi się do polecenia pv i pozwala modyfikować szybkość przesyłania danych w bajtach na sekundę. Innymi słowy, jeśli animacja porusza się zbyt szybko lub zbyt wolno, spróbuj zagrać z tym numerem. Oprócz animacji cURL może wyświetlać zwykłą, statyczną grafikę ASCII:

W sieci jest mnóstwo stron internetowych z wszelkiego rodzaju grafiką ASCII: od niesamowicie szczegółowych, wysokiej jakości elementów po dziwne, głupie, a nawet materiały NSFW. Ta technika sztuki cyfrowej sięga lat 60., a dziś jest częścią kultury i historii Internetu, utrzymywaną przy życiu w licznych kolekcjach i narzędziach, które pozwalają konwertuj tekst i obrazy do ASCII art . Możesz go użyć do udekorowania swojego terminalu lub do robienia żartów znajomym — cokolwiek, co unosi twoją łódź.

7. Eksperymentuj z mediami społecznościowymi

Korzystanie z mediów społecznościowych z poziomu terminala nie jest niczym nowym — pokazaliśmy już klienty Twittera wiersza poleceń dla Linuksa. Chociaż prawdopodobnie nie przełączysz się na cURL jako narzędzie do kontaktów towarzyskich online, dobrze jest wiedzieć, że możesz za jego pomocą publikować na Facebooku, jak opisano tutaj . Zauważysz, że technicznie cURL nie robi tego sam; połączenie narzędzi wykonuje zadanie.

Jeśli chodzi o Twittera, kiedyś można było nim zarządzać bezpośrednio z terminala za pomocą cURL. Następnie Twitter zmienił swoje API, a teraz jest specjalny klient cURL dla Twittera o nazwie Twurl. Nie jest to najłatwiejsza rzecz w użyciu, zwłaszcza dla początkującego, i wymaga uwierzytelnienia za pomocą platformy reklamowej Twittera. Ma to sens, jeśli jesteś programistą lub zaawansowanym użytkownikiem, ale nie tak bardzo, jeśli chcesz po prostu tweetować z wiersza poleceń. Mimo to istnieją sposoby na dobrą zabawę z Twitterem. Możesz użyć cURL, aby sprawdzić liczbę obserwujących użytkownika:

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

8. Znajdź swój zewnętrzny adres IP

Znalezienie lokalnego adresu IP jest dość łatwe — wystarczy uruchomić

jak usunąć znak wodny ze zdjęcia
ifconfig

lub skonsultuj się z apletem zarządzania siecią. W przypadku zewnętrznego adresu IP większość osób korzysta ze specjalistycznych witryn internetowych w celu uzyskania tych informacji. Mimo to niektóre rzeczy są po prostu łatwiejsze do zrobienia z terminala , a to może być jedna z nich. Możesz również utworzyć alias dla polecenia cURL. Istnieje kilka serwisów internetowych, które współpracują z cURL:

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

Niektórzy mogą powiedzieć więcej o dowolnym zewnętrznym adresie IP:

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

Wystarczy wybrać usługę. Jeśli jesteś niezdecydowany, po prostu uwzględnij je wszystkie w swoim aliasie, jako rozwiązania do tworzenia kopii zapasowych.

9. Wklej tekst i udostępnij obrazy

Przerwanie przepływu pracy nigdy nie jest dobre dla produktywności i koncentracji. Jeśli większość pracy wykonujesz w terminalu, przełączenie się na przeglądarkę tylko po to, aby udostępnić kilka plików, może być niepraktyczne, jeśli nie irytujące. Na szczęście niektóre usługi pastebin i udostępniania plików powstały do ​​pracy z cURL, więc możesz z nich korzystać bezpośrednio z terminala, bez konta użytkownika.

Clbin oraz Sprunge.us mają podobną składnię. Za pomocą Clbin przesyłasz potokiem lokalny plik lub wyjście polecenia i zwracasz link do przesłanego tekstu:

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

Obsługuje również przesyłanie obrazów (PNG, JPG i GIF):

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

Jeśli zamiast tego chcesz użyć Sprunge.us, wpisz:

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

Sprunge.us na razie nie obsługuje przesyłania obrazów.

Ix.io opiera się na tej samej zasadzie, co poprzednie dwie usługi, z kilkoma dodatkowymi funkcjami. Aby przesłać plik, wpisz:

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

lub

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

Gdy otrzymasz link do przesłanego tekstu, możesz zmodyfikować jego adres URL, aby pokazać podświetlanie składni (za pomocą

ix.io/yourpaste+

,

ix.io/yourpaste/

, lub

ix.io/yourpaste/language

dla określonego języka skryptowego lub programowania). Możliwe jest również ograniczenie liczby wyświetleń linku, modyfikując liczbę po

'read:1'

wartość:

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

Ix.io jest przeznaczony głównie do plików tekstowych, takich jak kod źródłowy lub dzienniki systemowe. Jeśli chcesz przesłać pliki w różnych formatach, użyj Transfer.sh . Obsługuje obrazy, szyfrowanie plików i utrzymuje pliki online przez dwa tygodnie. Do Transfer.sh możesz przesłać do 5 GB danych. Oto jak:

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

Możesz zdefiniować nazwę przesłanego pliku. Aby przesłać wiele plików, wymień je jeden po drugim za pomocą opcji -F:

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

10. Sprawdź nieprzeczytaną pocztę w Gmailu

Istnieje ogromny potencjał do odblokowania w cURL, jeśli chcesz zagłębić się w szczegóły protokołów związanych z pocztą e-mail (SMTP, POP, IMAP). Do szybkiego sprawdzenia poczty e-mail wystarczy to polecenie. Analizuje kanał Gmaila i formatuje dane wyjściowe (temat wiadomości e-mail i nadawca) za pomocą

tr

,

awk

,

sed

i/lub

grep

polecenia. Pamiętaj, że to rozwiązanie jest wyjątkowo niebezpieczne, ponieważ ujawnia Twoje dane logowania każdemu, kto ma dostęp do Twojego terminala. Pierwsza wersja pokazuje imię i nazwisko nadawcy, natomiast druga drukuje tylko nieprzeczytane tematy wiadomości e-mail:


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'

Co jeszcze może zrobić cURL?

cURL jest rzadko używany jako samodzielne polecenie. Większość ludzi używa go jako części skryptu lub aplikacji. Mimo to możliwe jest tworzenie praktycznych one-linerów za pomocą cURL, jak pokazaliśmy tutaj. Wiele z tych przykładów zostało zaadaptowanych z CommandLineFu , fantastycznego źródła inteligentnych hacków wiersza poleceń i nie powinieneś ich uważać za osadzone w kamieniu.

Przy odpowiedniej wiedzy i doświadczeniu możemy każdą komendę zmodyfikować, sformatować inaczej lub całkowicie zastąpić lepszym rozwiązaniem. Czy możesz ulepszyć nasze sugerowane polecenia cURL? Czy znasz jakieś inne fajne zastosowania cURL? Podziel się wskazówkami w komentarzach.

Kredyty obrazkowe: Wprowadzenie do wiersza poleceń od środka Osama Khalid przez Flickr.

Udział Udział Ćwierkać E-mail Usuń te pliki i foldery systemu Windows, aby zwolnić miejsce na dysku

Chcesz zwolnić miejsce na dysku na komputerze z systemem Windows? Oto pliki i foldery systemu Windows, które można bezpiecznie usunąć, aby zwolnić miejsce na dysku.

Czytaj dalej
Powiązane tematy
  • Linux
  • FTP
  • Zarządzanie pobieraniem
  • Terminal
O autorze Ivana Isadora Devcic(24 opublikowane artykuły)

Ivana Isadora jest niezależną pisarką i tłumaczką, miłośniczką Linuksa i fanką KDE. Wspiera i promuje bezpłatne i otwarte oprogramowanie oraz zawsze poszukuje nowych, innowacyjnych aplikacji. Dowiedz się, jak się z nami skontaktować tutaj .

Więcej od Ivany Isadory Devcic

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować