Używanie cURL do pobierania plików zdalnych z wiersza poleceń
Spisu treści:
- Pobierz pliki z dokładnym dopasowaniem za pomocą zawinięcia -O
- Zapisywanie zdalnego pliku pod inną nazwą za pomocą curl -o
- Pobieranie wielu plików jednocześnie z funkcją curl
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”.