По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Желание использовать данные с внешних сервисов это вполне обычная практика. Так как многие из этих сервисов доступны по HTTP(S) (REST API, например), то в этой статье мы хотим показать простой способ обращения к этим сервисам по cURL и обработку данных в случае, если сервер вернет JSON. Все взаимодействия будут выполняться из диалплана. Простой cURL запрос В диалплане Asterisk существует функция CURL, которая позволяет получить содержимое WEB или FTP страницы. Синтаксис запроса следующий: CURL(url,post-data) url - URL, к которому мы будем выполнять обращение; post-data - по умолчанию будет выполнен GET – запрос. Если в данном параметре будут указаны различные значения, то будет выполнен POST запрос с указанными в переменной данными; Например: exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)}) Здесь мы выполним GET запрос по указанному URL, а результат сохраним в переменной C_RESULT. Использование HTTPS в запросах Иногда, HTTPS запросы могут не срабатывать, так как удаленная сторона будет проверять наш SSL – сертификат. Если поставить параметр ssl_verifypeer=0, то такой проверки не будет: same => n,Set(CURLOPT(ssl_verifypeer)=0) Как воспользоваться этим в диалплане? Легко. С помощью функции GotoIf мы можем определить действие, которое отработает на базе результата cURL: exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)}) same => n,GotoIf($["${C_RESULT}" = "1"]?res1:res2) same => n(res1),Verbose(CURL Result = 1) same => n,Hangup same => n(res2),Verbose(CURL Result != 1) same => n,Hangup Указанный код отправит GET - запрос на rest, в котором в параметре num передаст номер звонящего (можно указать соответствующую переменную диалплана Asterisk). В случае, если результатом выполнения запроса будет 1, то мы перейдем к выполнению шага res1, а противоположном случае, res2. res_json для обработки JSON ответов На самом деле, для API, является обычной практикой возврат ответа в виде JSON. Поэтому, нам следует преобразовать эти данные перед обработкой их. Для этого мы воспользуемся модулем res_json из JSON библиотеки, который создан для расширения базовых возможностей диалплана с точки зрения обработки JSON. Почитайте материал об установке данного модуля по этой ссылке. exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest.json)}) same => n,Set(result=${JSONELEMENT(C_RESULT, result/somefield)}) same => n,GotoIf($["${result}" = "1"]?res1:res2) same => n(res1),Verbose(CURL Result = 1) same => n,Hangup same => n(res2),Verbose(CURL Result != 1) same => n,Hangup Для теста, создайте у себя на web – сервере файл rest.json со следующим содержанием: { "result": { "somefield": 1 } }
img
Edge computing (дословно можно перевести как "граничные вычисления") - это сетевая философия, основанная на том, что вычисления должны совершаться как можно ближе к источнику сырых данных. Цель сего действа в сильном сокращении задержек и ширины канала связи. Если говорить проще, то edge computing - это когда меньше всякой всячины вычисляется к облаке или ЦОДе, и больше вычисляется непосредственно на месте - то есть на локальном ПК, IoT устройстве или на граничном сервере. Таким образом сокращается необходимость поддерживать в требуемом состоянии дорогостоящие каналы связи (представьте себе, что для вычислений отправляете очень объемную информацию - к примеру, видео высокой четкости) Что такое граница сети? Для устройств, подключенных к сети Интернет, границей будет точка, где это устройства непосредственно подключается к Интернету. Конечно, определение экстремально размытое; к примеру, компьютер пользователя или процессор внутри IoT камеры могут быть теми самыми точками, однако, сетевой маршрутизатор также вполне попадает под это определение. Но важно одно: граница будет гораздо ближе к устройству (с географической точки зрения), нежели к облачным серверам. Приведем пример edge computing-а Представим себе некое здание, в котором понаставили десятки IoT камер очень высокого разрешения. Эти камеры относительно безмозглые, т.к они просто отдают сырой видеосигнал на облако. Облако, в свою очередь, пропускает весь этот сырой видео трафик через приложение, которое умеет определять движение, чтобы хранить только максимально полезную информацию. Представьте себе требованию к Интернет-каналу в таком случае: ежесекундно передаются мегабайты информации, и к тому же получается высокая нагрузка на облачные сервера, которые занимаются вычислениями - они обязаны обрабатывать все эти огромные объемы информации. А теперь представьте себе, что сервер, определяющий движение был помещен на границу сети (той самой, в которой находится наше воображаемое здание). Что если каждая камера будет использовать свои собственные вычислительные мощности для запуска там приложения, которое будет определять движение? Очевидно, тогда в облако будет уходить только "полезный" трафик. Кроме того, на облачные сервера ляжет только задача по хранению важной информации, что де-факто означает возможность этого облака поддерживать связь с гораздо большим количеством камер без перегрузки. Вот примерно так и выглядит пример edge computing. Преимущества концепции edge computing Как видно в примере выше, данный концепт позволяет минимизировать загрузку Интернет-канала и нагрузку на вычислительные мощности облака. Полоса пропускания и вычислительные мощности, к сожалению, конечны и стоят реальных денег. С каждым зданием и офисом, которые будут оборудованы "умными" камерами, принтерами, термостатами и даже тостерами, аналитики предсказывают, что к 2025 году в мире будет установлено 75 миллиардов IoT устройств. Чтобы все эти устройства корректно работали, большой процент вычислений должен быть перенесен на edge-и. Следующее преимущество - это снижение задержки. Каждый раз, когда устройство пытается подключиться к какому-нибудь удаленному серверу, появляется задержка. Гипертрофированный пример: когда двое коллег в одном офисе чатятся в аське, они могут почувствовать сильную задержку, так как каждое сообщение "улетает" во внешний мир, подключается к некому очень удаленному серверу и также возвращается обратно в эту сеть. Если бы весь этот процесс происходил на границе сети, то эта задержка могла бы быть значительно снижена. Также, когда пользователи используют тонны веб-приложений, которые постоянно подключаются к внешним серверам, они могут чувствовать эти самые задержки. Длительность задержек будет зависеть от того, какова их полоса пропускания и где находятся сервера, но этих задержек можно легко избежать. Правильно, если воткнуть все эти сервера на границу этой сети. Если подытожить, то общие плюсы этого концепта таковы: Снижение задержек Снижение затрат путем использования более дешевых каналов связи Снижение затрат путем уменьшения нагрузки на удаленные вычислительные ресурсы Минусы данного подхода На мой взгляд, есть два основных минуса: первый - это сильное увеличение сложности устройств и повышенный риск компрометации этих устройств - по сути, даже банальный термостат становится полноценным компьютером, который, как мы все знаем, может быть легко подвергнут взлому. Кроме того, из-за увеличения сложности устройств и повышения их вычислительной мощности серьезно возрастает их стоимость. Однако очевидно, что технологии шагают семимильными шагами - компьютер 30 лет назад был в тысячи раз слабее современного смартфона, а стоили они гораздо дороже.
img
Команда ping - это сетевой инструмент для проверки работоспособности удаленной системы. Другими словами, команда определяет, доступен ли определенный IP-адрес или хост. Ping использует протокол сетевого уровня, называемый Internet Control Message Protocol (ICMP), и доступен во всех операционных системах. С другой стороны, номера портов принадлежат протоколам транспортного уровня, таким как TCP и UDP. Номера портов помогают определить, куда пересылается Интернет или другое сетевое сообщение, когда оно приходит. В этом руководстве вы узнаете, как проверить связь с портом в Windows и Linux с помощью различных инструментов. Можно ли пропинговать конкретный порт? Сетевые устройства используют протокол ICMP для отправки сообщений об ошибках и информации о том, успешна ли связь с IP-адресом. ICMP отличается от транспортных протоколов, поскольку ICMP не используется для обмена данными между системами. Ping использует пакеты ICMP, а ICMP не использует номера портов, что означает, что порт не может быть опрошен. Однако мы можем использовать ping с аналогичным намерением - чтобы проверить, открыт порт или нет. Некоторые сетевые инструменты и утилиты могут имитировать попытку установить соединение с определенным портом и ждать ответа от целевого хоста. Если есть ответ, целевой порт открыт. В противном случае целевой порт закрывается или хост не может принять соединение, потому что нет службы, настроенной для прослушивания подключений на этом порту. Как пропинговать определенный порт в Linux? Вы можете использовать три инструмента для проверки связи порта в Linux: Telnet Netcat (NC) Network Mapper (nmap) Пинг определенного порта с помощью Telnet Telnet - это протокол, используемый для интерактивной связи с целевым хостом через соединение виртуального терминала. 1. Чтобы проверить, установлен ли уже telnet, откройте окно терминала и введите: telnet 2. Если telnet не установлен, установите его с помощью следующей команды Для CentOS/Fedora: yum -y install telnet Для Ubuntu: sudo apt install telnet 3. Чтобы пропинговать порт с помощью telnet, введите в терминале следующую команду: telnet [address] [port_number] Где [address] - это домен или IP-адрес хоста, а [port_number] - это порт, который вы хотите проверить. telnet google.com 443 Если порт открыт, telnet устанавливает соединение. В противном случае он указывает на сбой. 4. Чтобы выйти из telnet, нажмите Ctrl +] и введите q. Пинг определенного порта с помощью Netcat Netcat (nc) позволяет устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. Этот инструмент командной строки может выполнять множество сетевых операций. 1. Чтобы проверить, установлен ли netcat: Для Debian, Ubuntu и Mint: введите netcat -h Для Fedora, Red Hat Enterprise Linux и CentOS: ncat -h 2. Если netcat не установлен, выполните в терминале следующую команду: sudo apt install netcat 3. Чтобы пропинговать порт с помощью netcat, введите следующее: nc -vz [address] [port_number] Выходные данные информируют пользователя об успешном подключении к указанному порту. В случае успеха - порт открыт. Пинг определенного порта с помощью Nmap Nmap - это сетевой инструмент, используемый для сканирования уязвимостей и обнаружения сети. Утилита также полезна для поиска открытых портов и обнаружения угроз безопасности. 1. Убедитесь, что у вас установлен Nmap, введя nmap -version в терминал. Если Nmap установлен, вывод информирует пользователя о версии приложения и платформе, на которой он работает. 2. Если в вашей системе нет Nmap, введите следующую команду: Для CentOS или RHEL Linux: sudo yum install nmap Для Ubuntu или Debian Linux: sudo apt install nmap 3. После установки Nmap в системе используйте следующую команду для проверки связи определенного порта: nmap -p [port_number] [address] Выходные данные информируют пользователя о состоянии порта и типе службы, задержке и времени, прошедшем до завершения задачи. 4. Чтобы проверить связь с более чем одним портом, введите nmap -p [number-range] [address]. Синтаксис [number-range]- это диапазон номеров портов, которые вы хотите пропинговать, разделенные дефисом. Например: nmap -p 88-93 google.com Как пропинговать определенный порт в Windows? Проверить связь с портом в Windows можно двумя способами: Telnet PowerShell Пинг определенного порта с помощью Telnet Перед использованием telnet убедитесь, что он активирован: Откройте панель управления. Щелкните «Программы», а затем «Программы и компоненты». Выберите «Включение или отключение компонентов Windows». Найдите клиент Telnet и установите флажок. Щелкните ОК. Готово! Вы активировали клиент Telnet в системе. После завершения активации можно пропинговать порт с помощью telnet. Для этого: 1. Введите cmd в поиске в меню «Пуск». Щелкните на приложение Командная строка. 2. В окне командной строки введите telnet [address] [port_number] Где [address] - это домен или IP-адрес хоста, а [port_number] - это порт, который вы хотите проверить. Выходные данные позволяют узнать, открыт ли порт и доступен ли он, иначе отображается сообщение об ошибке подключения. Пинг определенного порта с помощью PowerShell PowerShell - это текстовая оболочка, которая по умолчанию поставляется с Windows. Чтобы проверить связь с портом с помощью PowerShell, выполните следующие действия: 1. Введите PowerShell в поиске в меню «Пуск». Щелкните приложение Windows PowerShell. 2. В окне командной строке PowerShell введите: Test-NetConnection [address] -p [port_number] Если порт открыт и соединение прошло успешно, проверка TCP прошла успешно. В противном случае появится предупреждающее сообщение о том, что TCP-соединение не удалось. Заключение Теперь вы знаете, как выполнить эхо-запрос и проверить, открыт ли порт, с помощью нескольких сетевых инструментов и утилит в Linux и Windows.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59