Używanie cURL do pobierania plików zdalnych z wiersza poleceń

Spisu treści:

Anonim

Potężne narzędzie wiersza poleceń curl może być używane do pobierania plików z dowolnego zdalnego serwera. Długoletni użytkownicy wiersza poleceń wiedzą, że może to być przydatne w wielu różnych sytuacjach, ale dla uproszczenia wielu przekona się, że pobranie pliku za pomocą curl może często być szybszą alternatywą dla korzystania z przeglądarki internetowej lub klienta FTP po stronie GUI Mac OS X (lub Linux).Jest to przydatne w sytuacjach lokalnych, ale jest szczególnie przydatne, gdy musisz pobrać coś na zdalny komputer Mac po połączeniu przez SSH.

Na potrzeby tego przewodnika skupimy się przede wszystkim na pobieraniu plików z dwóch powszechnie spotykanych protokołów HTTP i SFTP, chociaż należy zauważyć, że cURL obsługuje znacznie więcej protokołów. Chociaż curl jest łatwy w użyciu, zalecana jest pewna znajomość wiersza poleceń.

Pobierz pliki z dokładnym dopasowaniem za pomocą zawinięcia -O

Użycie flagi -O z dużymi literami z zawinięciem powoduje pobranie pliku ze zdalnego serwera przy zachowaniu dokładnej nazwy pliku, podstawowa składnia jest następująca:

zawiń -O

Oznacza to, że jeśli plik o podanym adresie URL ma nazwę „sample.zip”, zostanie pobrany z nazwą „sample.zip”, a jeśli plik ma nazwę ogromną i skomplikowaną, na przykład „LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt” na zdalnym serwerze, zapisze się pod tą samą nazwą na komputerze lokalnym. Dłuższe nazwy plików są często lepiej obsługiwane za pomocą flagi -o niż -O, o czym wkrótce porozmawiamy.

Stali czytelnicy mogą pamiętać, że podczas wyjaśniania, jak wyodrębnić rzeczywistą zawartość audio z pliku strumieniowego m3u, użyliśmy polecenia curl -O.

Rozpoczęcie dowolnego pobierania zawijaniem pokazuje procent przesłanych danych, czas spędzony na pobieraniu i pozostały czas oraz prędkość przesyłania.

Zrzut ekranu zapewnia lepszą reprezentację niż wklejony poniżej przykład, ale wygląda mniej więcej tak:

% Łącznie % Otrzymano % Xferd Średnia prędkość Czas Czas Czas Bieżące ładowanie Prześlij Łącznie wydano Lewa prędkość 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Pokazując prędkość transferu, możesz przekierować wyjście curl do /dev/null i użyć go do przetestowania szybkości połączenia internetowego, ale polecenie wget ma łatwiejszy do odczytania i śledzenia pasek transferu, więc wget jest lepszy nadaje się do tego zadania.

Zapisywanie zdalnego pliku pod inną nazwą za pomocą curl -o

Użycie flagi -o z małymi literami pozwoli ci określić inną nazwę pobieranego pliku niż nazwa na zdalnym serwerze. Może to być pomocne w skróceniu długich nazw plików lub po prostu oznaczeniu czegoś etykietą, aby łatwiej było je znaleźć samodzielnie. Ogólna składnia to:

curl -o

Na przykład, jeśli chcesz zapisać plik IPSW systemu iOS, który znalazłeś na serwerach Apple, ale nie zawiera on pełnej nazwy, możesz użyć następującego polecenia:

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

Spowoduje to pobranie pliku „iPhone5, 3_7.0.4_11B554a_Restore.ipsw”, ale o nazwie krótszej, jako bardziej znaczącej „iPhone5C-704.ipsw”.

Jeśli nie chcesz zapisywać pliku w bieżącym katalogu roboczym, podaj ścieżkę jako część nazwy pliku w następujący sposób:

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

Pobieranie wielu plików jednocześnie z funkcją curl

cURL umożliwia łatwe pobieranie wielu plików jednocześnie, wystarczy podać więcej niż jeden adres URL w następujący sposób:

zawiń -O

W przypadku plików o różnych nazwach, hostowanych na różnych serwerach lub w różnych ścieżkach katalogów użyj pełnego adresu URL, na przykład:

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

Z drugiej strony, jeśli nazwy plików do pobrania są nadawane przyrostowo, możesz użyć nawiasów, aby określić zakres pobierania, na przykład:

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

Spowoduje to jednoczesne pobranie plików fdl-1.1.txt, fd1-1.2.txt i fd1-1.3.txt bez konieczności określania każdego unikalnego adresu URL. Oczywiście działa to tylko wtedy, gdy pliki znajdują się razem w tym samym katalogu iw tej samej domenie.

Uwierzytelnianie za pomocą curl

Uwierzytelnianie można również przekazać za pomocą cURL, używając flagi -u:

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

Pamiętaj, że historia bash będzie przechowywać hasło w postaci zwykłego tekstu, gdy używasz -u z określoną nazwą użytkownika i hasłem, dlatego nie jest to zalecane w większości sytuacji. Możesz to obejść, umieszczając spację przed „curl”.Jeśli nie użyjesz spacji do poprzedzenia polecenia, prawdopodobnie później będziesz chciał opróżnić historię poleceń, aby być bezpiecznym.

Obsługiwane protokoły curl i użycie poza HTTP i FTP

Jak wspomniano wcześniej, użycie cURL wykracza daleko poza HTTP i FTP, ponieważ wpis na stronie podręcznika curl wspomina o dodatkowych protokołach w opisie:

Dodatkowo przekonasz się, że curl może być również używany do żądań PUT i POST, plików cookie, serwerów proxy, tuneli, wznawiania pobierania, a nawet przechwytywania informacji nagłówka HTTP lub zmiany agenta użytkownika (skuteczne fałszowanie) bez konieczności korzystania z dedykowanej przeglądarki internetowej.

Podobnie jak większość narzędzi wiersza poleceń, możesz dowiedzieć się znacznie więcej o curl, przywołując odpowiednią stronę podręcznika za pomocą polecenia „man curl”.

Używanie cURL do pobierania plików zdalnych z wiersza poleceń