По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Если вы когда-то пользовались какой-нибудь серверной версией Linux, то скорее всего сталкивались с командой curl. Эта мощная утилита системы Linux позволяет скачивать и загружать файлы на сервер и поддерживает более 20 протоколов. Раньше мы писали про первые 15 примеров cURL в Linux. Статья зашла - это продолжение :) cURL идеальная команда для взаимодействия с веб-сайтом или API, отправления запросов и получения ответов на терминал или с выводом в файл. Иногда она используется как часть сложного скрипта для передачи полученных данных другим функциям на дальнейшую обработку. Наряду с получением файлов из сервера, cURL так же используется для закачки части вебсайта. Несмотря на то, что она довольно хорошо справляется с работой, но всё же wget лучше наточен под такую работу. В конце материала мы рассмотрим несколько отличий и сходств этих двух утилит, но а пока расскажем как пользоваться утилитой curl. Скачивание файла Самая базовая команда, которую можно дать утилите cURL это скачать сайт или файл. По умолчанию, cURL использует протокол HTTP, но мы можем задать любой другой. Чтобы открыть исходный код сайта просто нужно ввести команду: $ curl http://www.google.com Когда мы вводим указанную команду, окно терминала заполняется HTML и другим кодом, используемым для создания веб страницы, но от такого вывода мало пользы. Изменим команду так, чтобы вывод перенаправлялся в HTML файл, чтобы затем можно было просмотреть содержимое. $ curl www.likegeeks.com --output likegeeks.html Теперь файл можно открыть любым браузером. Если нужно скачать какой-то файл, то команда остается та же. Только нужно добавить опцию output, как мы и сделали ранее. Если не сделать команда вернёт бинарный код файла, что может привести к сбою. Ниже показано что мы видим при попытке загрузить Word документ размером 500Кб. Файл начинает закачиваться, и мы видим текущий статус закачки. Когда загрузка завершится файл будет расположен по пути, указанной во время запуска команды. Если такового не было указано, то файл будет расположен в текущей директории. Также, вы, наверное, заметили ключ L в команде. При загрузке файла этот ключ необходим, но о его назначении поговорим чуть позже. Отслеживание редиректа Если после выполнения команды ничего не вернулось это значит, что на сайте есть редирект (переадресация) на другую ссылку, но cURL не понимает этого. Это можно исправить, указав ключ L при вводе команды. Во время подготовки материала мы заметили, что данный ключ нужен в подавляющем большинстве случаев. Так что возьмите себе эту фишку на вооружение. Остановка и продолжение скачивания Если во время закачки файла что-то пошло не так или же качаете большой файл, но ввиду каких-то причин не хотите делать это за одну сессию, cURL предоставляет возможность остановки и продолжения закачки. Чтобы остановить процесс вручную, нужно нажать комбинацию CTRL+C, которая используется для остановки почти всех процессов, запущенных в терминале. Итак, загрузка была начата, но мы прервали её комбинацией клавиш, а теперь нам нужно продолжить закачку. Для этого вводим следующую команду. $ curl -C - example.com/some-file.zip --output MyFile.zip Ключ C говорит утилите cURL продолжить закачку, но обратите внимание, что сразу после ключа указан дефис. Этот дефис указывает команде перед продолжением просмотреть уже закачанную часть, чтобы понять с какого места нужно продолжать загрузку. Закачка продолжилась и успешно завершилась. Указание времени выполнения команды Если нужно чтобы прервать выполнение команды cURL по истечении указанного времени, мы можем указать таймер выполнения команды. Это особо полезно так как некоторые операции выполняются бесконечно, что может привести к зависанию системы. Чтобы избежать этого можно указать максимальный период в секундах, по истечении которого cURL прервёт выполнение команды. Вышесказанное реализуется следующим образом: $ curl -m 60 example.com Также есть возможность указать в течении какого времени держать соединение активным. Это позволит избежать бесконечных попыток соединения с узлом, который не доступен. Эта опция тоже в качестве аргумента принимает значение в секундах. А команда выглядит так: $ curl --connect-timeout 60 example.com Указание логина и пароля Утилита cURL позволяет указывать имя пользователя и пароль при подключении. Чаще всего это нужно при аутентификации на FTP сервере. Для этого используется ключ u. Синтаксис команды указан ниже: $ curl -u username:password ftp://example.com Данную опцию можно использовать с любым протоколом, но FTP является самым распространённым для простой передачи файлов. Если нужно скачать файл указанный на скриншоте ниже запускаем ту же команду, только указываем полный путь к нужному документу. $ curl -u username:password ftp://example.com/readme.txt Использование прокси cURL можно указать, чтобы подключение выполнялось через прокси сервер. По умолчанию, она использует HTTP прокси, но можно указать и другие. Чтобы направить трафик через прокси используется ключ x. $ curl -x 192.168.1.1:8080 http://example.com Данная команда обязует cURL подключиться к прокси по адресу 192.168.1.1 на порту 8080 перед обращением на example.com Прокси можно использовать и с другими протоколами. Ниже показан пример использования прокси сервера для получения файла с фтп сервера. $ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt cURL поддерживает много типов прокси и соответствующих ключей, но охватить их всех в одном руководстве сложно. Для более подробной информации о туннелировании, SOCKS прокси, аутентификации и т.п. можете прочитать man по команде cURL. Загрузка больших файлов по частям Мы уже показывали как можно остановить и запустить закачку, но что если мы хотим скачать файл большого размера по частям? cURL имеет и такую возможность. Чтобы реализовать это достаточно указать ключ -range и размер загружаемой части. Размер должен быть указан в байтах. Чтобы скачать последнюю версию Ubuntu частями по 100 МБ нужно прописать следующую команду: $ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1 Во вторая команде нужно указать с какого байта начинать загрузку. И так пока не скачается весь файл. $ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2 Затем просто нужно собрать воедино скачанные части: $ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso Аутентификация по сертификату Для подключения к сайту использованием сертификата вместо обычной аутентификации можно указать опцию cert и путь к сертификату. $ curl --cert path/to/cert.crt:password ftp://example.com cURL поддерживает большое количество форматов сертификатов и имеет очень много опций для работы с ними: -cacert, cert-status, -cert-type, и т.д. Для списка всех ключей посмотрите man. Тихий режим Если вас раздражают разные сообщения об ошибках во время работы с cURL, то можно запустить её в тихом режиме. Для этого используется ключ s. Но, чтобы увидеть результат выполнения команды вывод нужно перенаправить в файл. Для сохранения файла в текущей директории просто нужно указать ключ O. $ curl -s -O http://example.com Как альтернатива, команду можно запустить с опцией --output и указать название и путь к месту сохранения файла. $ curl -s http://example.com --output index.html Получение заголовков cURL позволяет легко получать заголовков какого-либо сайта. Для этого достаточно запустить команду с ключом I. $ curl -I example.com Если запустить команду с ключами I и L совместно, то cURL выведёт заголовки даже если на сайте стоит переадресация. Множественные заголовки Команде cURL можно передать и заголовки. Для этого есть ключ H. Для передачи нескольких заголовков перед каждым из них нужно поставить данный ключ. $ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com POST Закачка файла на сервер POST самый распространённый метод получения данных на веб-сайтах. Например, когда заполняете форму на сайте, скорее всего данные из форм передаются серверу методом пост. Чтобы отправить сайту данные этим методом нужно использовать ключ d. $ curl -d 'name=geek&location=usa' http://example.com Чтобы загрузить файл вместо текста нужно ввести следующую команду $ curl -d @filename http://example.com Используйте ключ d столько раз, сколько данных или файлов нужно отправить на сайт. Чтобы загрузить файл через протокол FTP используйте ключ T $ curl -T myfile.txt ftp://example.com/some/directory/ Отправка почты Отправка почты это один из видов загрузки данных на почтовый сервер. Так как cURL может загружать файлы, то мы можем использовать ее и для отправки почты. Есть много вариантов сделать это, но здесь мы рассмотрим, как посылать почты через SMTP сервер. $ curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt john@domain.com --upload-file email.txt Учтите, что файл e-mail должен быть отформатирован нужным образом. Что-то вроде этого: $ cat email.txt From: Web Administrator <me@example.com> To: John Doe <john@domain.com> Subject: An example email Date: Sat, 7 Dec 2019 02:10:15 John, Hope you have a great weekend. -Admin Как всегда, за подробной информацией можете обратиться к man. Чтение почты Для получения почты используется IMAP и POP3 и сurl поддерживает оба протокола. Зайдем на почту используя протокол IMAP: $ curl -u username:password imap://mail.example.com Данная команда выведет список доступных почтовых ящиков, но не покажет их содержание. Чтобы прочитать письмо нужно указать UID письма аргументов для опции X. $ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234' Разница между cURL и wget Иногда пользователей путаются между curl и wget, так как обе они могут получать информацию с сервера. Но это единственное сходство между ними. В этом материале мы показали возможности curl. wget дает другие возможности. wget лучшая утилита для скачивания файлов, а также у него есть возможность делать это рекурсивно, переходя по всем ссылкам и директория и скачать сайт полностью. Таким образом, если вам нужно скачать все исходные файлы сайта используйте wget. Если же используется протокол отличный от HTTP или HTTPS, или нужно закачать файл на сервер, выберите curl. cURL удобен для скачивания одиночных файлов, хотя и wget неплохо справляется с данной задачей.
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В документе мы описали самые частые сценарии повседневной работы администратора, с которыми встречались сами. От Ubuntu до FreeBSD, от 10 команд, которые "убьют" твой сервер до 15 лучших дистрибутивов Linux, от установки RPM до принципов работы с CURL. Получившееся руководство администратора по Linux/Unix можно получить по ссылке ниже: Скачать
img
У каждого из нас, наверное, есть родственник (бабушка, брат, племянник или еще кто-то), который говорил так быстро, что вы не могли понять слова, которое он говорил? Некоторые компьютерные программы тоже "говорят" слишком быстро. Рисунок 1 иллюстрирует это. На рисунке: В момент времени 1 (T1) отправитель передает около четырех пакетов на каждые три, которые может обработать приемник. Приемник имеет пяти-пакетный буфер для хранения необработанной информации; в этом буфере находятся два пакета. В момент времени Т2 отправитель передал четыре пакета, а получатель обработал три; буфер в приемнике теперь содержит три пакета. На этапе T3 отправитель передал четыре пакета, а получатель обработал три; буфер в приемнике теперь содержит четыре пакета. На этапе T4 отправитель передал четыре пакета, а получатель обработал три; буфер в приемнике теперь содержит пять пакетов. Следующий переданный пакет будет отброшен получателем, потому что в буфере нет места для его хранения, пока получатель обрабатывает пакеты, чтобы их можно было удалить. Что необходимо, так это своего рода петля обратной связи, чтобы сказать передатчику замедлить скорость, с которой он посылает пакеты, как показано на рисунке 3. Этот тип обратной связи требует либо неявной сигнализации, либо явной сигнализации между приемником и передатчиком. Неявная передача сигналов используется более широко. При неявной сигнализации передатчик предполагает, что пакет не был принят на основании некоторых наблюдений о потоке трафика. Например, получатель может подтвердить получение некоторого более позднего пакета, или получатель может просто не подтвердить получение определенного пакета, или получатель может не отправлять что-либо в течение длительного периода времени (в терминах сети). При явной сигнализации получатель каким-то образом напрямую сообщает отправителю, что определенный пакет не был получен. Windowing Windowing в сочетании с неявной передачей сигналов, безусловно, является наиболее широко используемым механизмом управления потоками в реальных сетях. Windowing по существу состоит из следующего: Передатчик отправляет некоторое количество информации получателю. Передатчик ждет, прежде чем решить, правильно ли была получена информация или нет. Если получатель подтверждает получение в течение определенного периода времени, передатчик отправляет новую информацию. Если получатель не подтверждает получение в течение определенного периода времени, передатчик повторно отправляет информацию. Неявная сигнализация обычно используется с Windowing протоколами, просто не подтверждая получение конкретного пакета. Явная сигнализация иногда используется, когда получатель знает, что он сбросил пакет, когда полученные данные содержат ошибки, данные получены не по порядку или данные иным образом повреждены каким-либо образом. Рисунок 3 иллюстрирует простейшую Windowing схему-окно с одним пакетом. В одиночном окне пакета (также иногда называемом ping pong) передатчик отправляет пакет только тогда, когда получатель подтвердил (показанный на рисунке как ack) получение последнего переданного пакета. Если пакет не получен, получатель не подтвердит его. При отправке пакета отправитель устанавливает таймер, обычно называемый таймером повторной передачи; как только этот таймер активируется (или истекает), отправитель предполагает, что получатель не получил пакет, и отправляет его повторно. Как долго должен ждать отправитель? Существует несколько возможных ответов на этот вопрос, но по существу отправитель может либо ждать фиксированное количество времени, либо установить таймер на основе информации, полученной из предыдущих передач и условий сети. Простой (и наивной) схемой было бы Измерьте промежуток времени между отправкой пакета и получением подтверждения, называемый временем обратного пути (RTT- Round Trip Time, хотя обычно пишется в нижнем регистре, поэтому rtt). Установите таймер повторной передачи на это число плюс небольшое количество времени буфера, чтобы учесть любую изменчивость в RTT на протяжении нескольких передач. Кроме того, получатель может получить две копии одной и той же информации: A передает пакет и устанавливает таймер его повторной передачи B получает пакет, но Не может подтвердить получение, потому что он находится вне памяти или испытывает высокую загрузку процессора или какое-то другое состояние. Отправляет подтверждение, но оно отбрасывается сетевым устройством. Таймер повторной передачи в точке A истекает, поэтому отправитель передает другую копию пакета. B получает эту вторую копию той же информации Как получатель может обнаружить дублированные данные? Для получателя представляется возможным сравнить полученные пакеты, чтобы увидеть, есть ли дублирующаяся информация, но это не всегда будет работать - возможно, отправитель намеревался отправить одну и ту же информацию дважды. Обычный метод обнаружения дублирующейся информации заключается в включении некоторого вида порядкового номера в передаваемые пакеты. Каждому пакету присваивается уникальный порядковый номер при его создании отправителем; если получатель получает два пакета с одинаковым порядковым номером, он предполагает, что данные дублированы, и отбрасывает копии. Окно размером 1, или ping pong, требует одного кругового перехода между отправителем и получателем для каждого набора передаваемых данных. Это, как правило, приводит к очень низкой скорости передачи. Если рассматривать сеть, как о сквозном железнодорожном пути, а каждый пакет-как об одном вагоне поезда, то наиболее эффективное использование пути и самая быстрая скорость передачи данных будут тогда, когда путь всегда полон. Это физически невозможно, однако, в случае сети, потому что сеть используется многими наборами отправителей и получателей, и всегда есть сетевые условия, которые помешают использованию сети достичь 100%. Существует некоторый баланс между повышением эффективности и скорости отправки более одного пакета за один раз, а также мультиплексированием и "безопасностью" отправки меньшего количества пакетов за один раз (например, одного). Если правильная точка баланса может быть вычислена каким-то образом, схема управления потоком с фиксированным окном может хорошо работать. Рисунок 4 иллюстрирует это. На рисунке 4, предполагаемое фиксированное окно с тремя пакетами: При T1, T2 и T3 A передает пакеты; A не нужно ждать, пока B что-либо подтвердит, чтобы отправить эти три пакета, так как размер окна установлен на 3. В момент T4 B подтверждает эти три пакета, что позволяет A передать другой пакет. При T5 B подтверждает этот новый пакет, даже если это только один пакет. B не нужно ждать, пока A передаст еще три пакета, чтобы подтвердить один пакет. Это подтверждение позволяет A иметь достаточный бюджет для отправки еще трех пакетов. При T5, T6 и T7 A отправляет еще три пакета, заполняя свое окно. Теперь он должен ждать, пока B не подтвердит эти три пакета, чтобы отправить больше информации. На этапе T8 B подтверждает получение этих трех пакетов. В схемах управления окнами, где размер окна больше одного, существует четыре вида подтверждений, которые приемник может отправить передатчику: Положительное подтверждение: приемник подтверждает получение каждого пакета в отдельности. Например, если порядковые номера 1, 3, 4 и 5 были получены, приемник подтвердит получение этих конкретных пакетов. Отправитель может сделать вывод, какие пакеты не получил приемник, отметив, какие порядковые номера не были подтверждены. Отрицательное подтверждение: приемник отправляет отрицательное ack для пакетов, которые, по его мнению, отсутствуют или были повреждены при получении. Например, если порядковые номера 1, 3, 4 и 5 были получены, приемник может сделать вывод, что порядковый номер 2 отсутствует, и отправить отрицательное ack для этого пакета. Выборочное подтверждение: по сути, это сочетание положительного и отрицательного подтверждения, как указано выше; приемник отправляет как положительные, так и отрицательные подтверждения для каждой последовательности полученной информации. Кумулятивное подтверждение: подтверждение получения порядкового номера подразумевает получение всей информации с более низкими порядковыми номерами. Например, если порядковый номер 10 подтвержден, подразумевается информация, содержащаяся в порядковых номерах 19, а также информация, содержащаяся в порядковом номере 10 Третий оконный механизм называется управлением потоком скользящего окна. Этот механизм очень похож на фиксированный механизм управления потоком окон, за исключением того, что размер окна не является фиксированным. При управлении потоком со скользящим окном передатчик может динамически изменять размер окна при изменении сетевых условий. Приемник не знает, какого размера окно, только то, что отправитель передает пакеты, и время от времени приемник подтверждает некоторые или все из них, используя один из механизмов подтверждения, описанных в предыдущем списке. Механизмы скользящих окон добавляют еще один интересный вопрос к вопросам, уже рассмотренным в других механизмах управления окнами: какого размера должно быть окно? Простое решение позволяет просто вычислить rtt и установить размер окна, кратный rtt. Были предложены более сложные решения; Negotiated Bit Rates (Согласование Bit Rates) Другое решение, которое чаще используется в сетях с коммутацией каналов, а не в сетях с коммутацией пакетов, заключается в том, чтобы отправитель, получатель и сеть согласовывали скорость передачи битов для любого конкретного потока. Широкий спектр возможных скоростей передачи данных был разработан для ряда различных сетевых технологий. Возможно, "наиболее полный набор" предназначен для асинхронного режима передачи данных (ATM)-но данные сети ATM вы скорее всего найдете в ближайшем Музее истории сетей, потому что ATM редко развертывается в производственных сетях. Битовые скорости ATM являются: Постоянная скорость передачи (Constant Bit Rate -CBR): отправитель будет передавать пакеты (или информацию) с постоянной скоростью; следовательно, сеть может планировать с учетом этой постоянной нагрузки на полосу пропускания, а приемник может планировать с учетом этой постоянной скорости передачи данных. Этот битрейт обычно используется для приложений, требующих синхронизации времени между отправителем и получателем. Переменная скорость передачи (Variable Bit Rate -VBR): отправитель будет передавать трафик с переменной скоростью. Эта скорость обычно согласовывается с несколькими другими частями информации о потоке, которые помогают сети и получателю планировать ресурсы, включая: Пиковая скорость или максимальная скорость передачи пакетов в секунду, которую планирует передать отправитель Устойчивая скорость или скорость, с которой отправитель планирует передавать данные в обычном режиме Максимальный размер пакета или наибольшее количество пакетов, которые отправитель намеревается передать за очень короткий промежуток времени Доступная скорость передачи (Available Bit Rate -ABR): отправитель намеревается полагаться на способность сети доставлять трафик с максимальной отдачей, используя некоторую другую форму управления потоком, такую как метод скользящего окна, для предотвращения переполнения буфера и настроить передаваемый трафик на доступную полосу пропускания.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59