По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Для осуществления перенаправления вызовов по необходимым правилам прибегают к настройке входящих и исходящих маршрутов. Из названия ясно, что входящие маршруты отвечают за обработку входящих вызовов, а исходящие за обработку звонков в город. В статье расскажем о настройке обоих маршрутов в IP – АТС Elastix. Настройка входящих маршрутов Начнем с настройки маршрутизации для приходящих на нашу АТС звонков. Для этого, перейдем в раздел PBX → PBX Configuration → Inbound Routes. Перед нами откроется интерфейс настройки входящего маршрута: В рядовом случае, маршрутизация осуществляется по параметру DID Number - это номер, который набрал звонящий. Например, у вас есть 2 номера: 74951234567 и 74957654321. Чтобы при звонке на первый номер вызовы уходили на оператора, а при звонке на второй номер на менеджера, нужно создать два отдельных маршрута. Чтобы Elastix смог отличить звонок на первый номер от звонка на второй, необходимо создать маршрут с DID Number 74951234567 с перенаправлением на оператора, и второй маршрут с DID Number 74957654321 с направлением на менеджера. Для того, чтобы входящие заработали, достаточно следующей настройки: Рассмотрим прочие пункты настройки: Add Incoming Route Description - описание для создаваемого маршрута DID Number - номер DID, который мы обсуждали ранее. Это номер, который набирает звонящий. CallerID Number - в данном поле можно указать номер звонящего (CallerID). В данном случае маршрут будет проверять два условия: совпадения номера звонящего и набранного номера. CID Priority Route - если вы хотите исключительно маршрутизировать звонок по номеру звонящего, то поставьте галочку в данном чекбоксе. Options Alert Info - если данный маршрут является обязательным (аварийным, например, для службы безопасности), мы можете оснащать заголовки SIP сообщений текстом в поле ALERT_INFO. Большинство устройств, получая текст в данном поле могут изменить сигнал звонка или автоматически ответить на звонок CID name prefix - в данном поле разрешается подставить префикс для имени в составе Caller ID. Например, префикс Partner: на маршруте преобразует звонок с номера 74951234567 в Partner:74951234567 Music On Hold - музыка на удержании, для вызовов, которые отрабатываются по этому маршруту Signal RINGING - посылать ли сигнал КПВ (Контроль посылки вызова) до ответа на звонок Pause Before Answer - временная задержка перед обработкой вызова по правилам этого маршрута Privacy Privacy Manager - если вызов пришел без CallerID, то звонящему будет предложено ввести свой номера телефона в течение 3 попыток Call Recording Call Recording - записывать ли вызовы на данном маршруте CID Lookup Source Source - источник для преобразования номеров в имена. Осуществляется с помощью модуля CallerID Lookup Sources Fax Detect Detect Faxes - определять ли факсимильные сигналы на данном маршруте Language Language - настройка языка, который функционирует на данном маршруте. Например, маршрут может быть предназначен для звонящих из Германии, Франции или России. Настройка так же влияет на параметр Privacy Manager Set Destination Выбрать назначение для звонка из представленных Настройка исходящих маршрутов Теперь сделаем настройку маршрутов для исходящих вызовов. Переходим в раздел PBX → PBX Configuration → Outbound Routes: В разделе рассмотрим краткую настройку модуля. Если вы хотите подробно ознакомиться о всеми опциями настройки, то перейдите по этой ссылке. Итак, чтобы ваши телефоны смогли звонить в город, необходимо настроить следующие позиции: Route Name - имя для маршрута Dial Patterns that will use this Route - шаблон для отправки вызовов по этому маршруту. Если вы хотите отправлять все без разбора вызовы и без преобразования в транк, то в поле match pattern укажите . (точку) Trunk Sequence for Matched Routes - транк, в который вызов будет отправляться по этому маршруту. Можно указать несколько, и, в случае, если первый транк будет не доступен, то будет использоваться следующий.
img
Интересная проблема, упомянутая как в RFC 2597, так и в RFC 3246, - это проблема сохранения метки при туннелировании помеченного пакета. Когда пакет туннелируется, исходный пакет оборачивается-или инкапсулируется-внутри нового IP-пакета. Значение байта ToS находится внутри IP-заголовка теперь инкапсулированного пакета. Ой-ой. Что только что произошло с тщательно разработанной схемой классификации трафика? Ответ заключается в том, что сетевые устройства участвуют в отражении ToS при туннелировании. Когда пакет туннелируется, значение байта ToS в инкапсулированном пакете копируется (или отражается) в IP-заголовке туннельного пакета. Это сохраняет классификацию трафика туннелированного приложения. Аналогичная проблема возникает при отправке маркированного трафика из сетевого домена, который вы контролируете, в тот, который вам не принадлежит. Наиболее распространенный пример - отправка помеченного трафика из вашей локальной сети в сеть вашего поставщика услуг, пересекая его глобальную сеть. Поставщики услуг, как часть контракта на обеспечение связи, также часто предоставляют дифференцированные уровни обслуживания. Однако, чтобы они могли предоставлять дифференцированные услуги, трафик должен быть помечен таким образом, чтобы они могли его распознать. Их схема маркировки вряд ли будет такой же, как ваша схема маркировки, учитывая огромное количество возможных возможных схем маркировки. Предлагается несколько решений этой дилеммы: Мутация DSCP: в этом сценарии сетевое устройство на границе между LAN и WAN переводит метку из исходного значения, назначенного в LAN, в новое значение, которое будет соблюдать SP. Перевод выполняется в соответствии с таблицей, настроенной сетевым инженером. Трансляция DSCP: для провайдеров SP нередко наблюдаются только первые три бита байта ToS, что восходит к временам IP Precedence, определенным еще в RFC791. Во втором решении сетевой инженер сталкивается с проблемой создания современной схемы маркировки DSCP с использованием шести битов, даже если поставщик услуг будет обращать внимание только на первые три. Задача состоит в том, чтобы поддерживать дифференциацию. Например, рассмотрим схему, показанную в таблице ниже. Эта схема не решит проблему. В этой таблице определены шесть уникальных значений DSCP для использования в локальной сети. Однако эти шесть уникальных значений уменьшаются до трех уникальных значений, если только первые три бита учитываются поставщиком услуг. Это означает, что некоторый трафик, который до попадания в сеть провайдера мог обрабатываться по-разному, теперь будет помещен в одну корзину. В этом примере EF и CS5, ранее уникальные, попадают в один и тот же класс, когда они покидают граничный маршрутизатор, поскольку оба начальных бита EF и CS5 равны 101. То же самое касается AF11, AF12 и AF13 - три ранее различных классы трафика, которые теперь будут обрабатываться одинаково при прохождении SP WAN, поскольку все они имеют одинаковое начальное значение 001 в начальных трех битах. Способ решить эту проблему - создать схему маркировки DSCP, которая будет поддерживать уникальность в первых трех битах, как показано в таблице. Однако для этого может потребоваться сокращение общего количества классов трафика. Ограничение схемы первыми тремя битами для определения классов уменьшит общее количество классов до шести. В таблице выше показана схема маркировки, использующая сочетание значений EF, AF и Class Selector, специально выбранных для сохранения уникальности первых трех битов.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59