По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Хотим рассказать про операционную систему IOS, разработанную компанией Cisco. Cisco IOS или Internetwork Operating System (межсетевая операционная система) это программное обеспечение, которое используется в большинстве коммутаторов и маршрутизаторов Cisco (ранние версии коммутаторов работали на CatOS). IOS включает в себя функции маршрутизации, коммутации, межсетевого взаимодействия и телекоммуникаций, интегрированных в мультизадачную операционную систему. Не все продукты Cisco используют IOS. Исключения составляют продукты безопасности ASA, которые используют операционную систему Linux и роутеры-маршрутизаторы, которые запускают IOS-XR. Cisco IOS включает в себя ряд различных операционных систем, работающих на различных сетевых устройствах. Существует много различных вариантов Cisco IOS: для коммутаторов, маршрутизаторов и других сетевых устройств Cisco, версии IOS для определенных сетевых устройств, наборы функций IOS, предоставляющие различные пакеты функций и сервисов. Сам файл IOS имеет размер в несколько мегабайт и хранится в полупостоянной области памяти под названием flash. Флэш-память обеспечивает энергонезависимое хранилище. Это означает, что содержимое памяти не теряется, когда устройство теряет питание. Во многих устройствах Cisco IOS копируется из флэш-памяти в оперативное запоминающее устройство ОЗУ (RAM), когда устройство включено, затем IOS запускается из ОЗУ, когда устройство работает. ОЗУ имеет множество функций, включая хранение данных, которые используются устройством для поддержки сетевых операций. Работа IOS в ОЗУ повышает производительность устройства, однако ОЗУ считается энергозависимой памятью, поскольку данные теряются во время цикла питания. Цикл питания - это когда устройство намеренно или случайно отключается, а затем снова включается. Управление устройствами с IOS происходит при помощи интерфейса командной строки (CLI), при подключении при помощи консольного кабеля, по Telnet, SSH либо при помощи AUX порта. Названия версий Cisco IOS состоят из трех чисел, и нескольких символов a.b(c.d)e, где: a – номер основной версии b – номер младшей версии (незначительные изменения) c – порядковый номер релиза d – промежуточный номер сборки e (ноль, одна или две буквы) – идентификатор последовательности выпуска программного обеспечения, такой как none (который обозначает основную линию), T (Technology), E (Enterprise), S (Service provider), XA специальный функционал, XB как другой специальный функционал и т. д. Rebuild – часто ребилды выпускаются чтобы исправить одну конкретную проблему или уязвимость для данной версии IOS. Ребилды производятся либо для быстрого устранения проблемы, либо для удовлетворения потребностей клиентов, которые не хотят обновляться до более поздней крупной версии, поскольку они могут использовать критическую инфраструктуру на своих устройствах и, следовательно, предпочитают свести к минимуму изменения и риск. Interim release – промежуточные выпуски, которые обычно производятся на еженедельной основе и образуют срез текущих наработок в области развития. Maintenance release – протестированные версии, которые включают в себя усовершенствования и исправления ошибок. Компания Cisco рекомендует, по возможности, обновлять ПО до версии Maintenance. Стадии развития: Early Deployment (ED) – ранее развертывание, вводятся новые функции и платформы. Limited Deployment (LD) – первоначальная лимитированная развертка, включают в себя исправления ошибок. General Deployment (GD) – общее развертывание ОС, происходит тестирование, доработка и подготовка к выпуску окончательной версии. Такие выпуски, как правило, стабильны на всех платформах Maintenance Deployment (MD) – эти выпуски используются для дополнительной поддержки, исправлений ошибок и постоянного обслуживания программного обеспечения. Большинство устройств Cisco, которые используют IOS, также имеют один или несколько «наборов функций» или «пакетов» - Feature Set. Например, выпуски Cisco IOS, предназначенные для использования на коммутаторах Catalyst, доступны как «стандартные» версии (обеспечивающие только базовую IP-маршрутизацию), «расширенные» версии, которые предоставляют полную поддержку маршрутизации IPv4 и версии «расширенных IP-сервисов», которые предоставляют расширенные функции, а также поддержку IPv6. Каждый отдельный feature set соответствует одной категории услуг помимо базового набора (IP Base – Static Routes, OSPF, RIP, EIGRP. ISIS, BGP, IMGP, PBR, Multicast): IP-данные (Data – добавляет BFD, IP SLAs, IPX, L2TPv3, Mobile IP, MPLS, SCTP) Голос (Unified Communications – CUBE, SRST, Voice Gateway, CUCME, DSP, VXML) Безопасность и VPN (Security — Firewall, SSL VPN, DMVPN, IPS, GET VPN, IPSec)
img
Использование REST API является полезной функцией для реализации ваших сценариев. Вы можете получить доступ к новым функциям, а также расширить возможности создания новых, более продвинутых сценариев. Опыт многих пользователей показывает, что, когда начинаешь использовать REST API в скриптах, то чувствуешь себя довольно неуклюже и непривычно. В этой заметке мы обсудим: Что такое REST API Как читать документацию Как использовать API REST с PowerShell Некоторые советы и подсказки, как облегчить и улучшить практику Что такое "REST"? REST, или RESTful API, это API, который использует HTTP запросы для получения, добавления, удаления или манипулирования данными в различных сервисах. Как правило, то, что нужно сделать с данными, решается тем, какой HTTP-метод вы используете. Вот краткий список методов HTTP и их применение в REST API: GET-Read POST-Create PATCH-Partial update/modify PUT-Update/replace DELETE-Remove Данные, которые возвращает API REST, обычно представляются в формате JSON. Теперь давайте начнём с нашего первого API запроса! Что такое API Работа с документацией Для использования различных API REST необходимо научиться читать и интерпретировать документацию. К счастью, если вы знаете, как читать один тип документации, вы сможете быстро научиться читать другие. В этой статье мы используем petstore.swagger.io, так как он использует популярный фреймворк Swagger, который довольно часто используется в разработке. На предыдущем рисунке показана наиболее важная информация о конечных точках REST API: HTTP-метод-GET/POST/DELETE и т.д. URL-адрес, связанный с конечной точкой REST API (Базовый URL, как правило, представлен в верхней части страницы документации) Краткое описание Подробности Первая страница документации просто замечательная, и, как правило, с помощью этой информации можно выполнить большинство запросов, требующих использования метода HTTP GET. Но такие методы, как POST и SET, обычно требуют, чтобы вы щелкнули и развернули строку, чтобы получить больше информации. Если вы нажмете на одну из строк, то получите информацию, которая выглядит так: Здесь мы представили конечную точку REST, которая может создать новый объект pet. Здесь указывается, как должен выглядеть JSON, предоставленный в теле POST, и какой тип контента он принимает. Другие конечные точки REST указывают, что это за параметры, каким типом данных они должны быть и т.д. Это основы для чтения документации. Теперь, когда общие принцип более-менее ясны, пора начать использовать REST API с PowerShell. Получение первых данных (GET) Используя REST API с PowerShell обычно довольно просто, используется встроенные командлеты, таким образом, нет необходимости в дополнительных модулях. Мы собираемся извлечь данные с помощью метода GET в конечной точке /pet/{ petId}. Если развернуть конечную точку /pet/{ petId} в документации, можно увидеть, что {petId} на самом деле является параметром, который принимает целое число. Это делает URL-адрес для выборки объекта pet с идентификатором 1: https://petstore.swagger.io/v2/pet/1 В документации SWAGGER REST API обычно отображается базовый URL-адрес в верхней части страницы. Теперь начнем с PowerShell. Откройте окно терминала и введите: PS51 > Invoke-RestMethod -Method GET -ContentType "application/json" -Uri "https://petstore.swagger.io/v2/pet/1" id : 1 category : @{id=0; name=string} name : doggie photoUrls : {string} tags : {@{id=0; name=string}} status : available Поскольку в ответе от сервера возвращается тип содержимого "application/json" используется метод Invoke-RestMethod, который автоматически преобразует возвращаемый JSON в объект. Ошибка 404 Not found, как правило, означает, что объект не найден или URL-адрес введен неправильно. Итак, мы выполнили первый вызов REST API. Но возможности метода GET для получения данных довольно ограничены, так что давайте создадим что-нибудь с помощью метода POST. Создание объекта методом POST Метод POST чаще всего используется для создания, например, пользователей или записей и т.д. Запрос POST отправляет BODY, содержащий информацию, конечной точке REST, обычно в формате JSON, но он также может быть в виде формы с кодировкой URL. Вы узнаете, как создать объект JSON, который можно отправить в конечную точку/pet. Можно увидеть, как должен выглядеть JSON, если развернуть строку POST/pet в документации. Начнем с создания хэштаблицы, который можно преобразовать в объект JSON. Raw JSON следует избегать в скриптах PowerShell, поскольку он ограничивает его возможности. $Body = @{ id = 19 category = @{ id = 45 name = "Whatever" } name = "Dawg" photoUrls = @( "string" ) tags = @( @{ id = 0 name = "string" } ) status = "available" } Если вам трудно создать хештаблицу, который преобразуется в нужный JSON, установите модуль PsdKit и используйте команду $ JsonString | ThreadTo-Psd Теперь имеется хэш-таблица, которую можно преобразовать в строку JSON и POST в конечную точку/pet: $JsonBody = $Body | ConvertTo-Json $Uri = "https://petstore.swagger.io/v2/pet" Invoke-RestMethod -ContentType "application/json" -Uri $Uri -Method Post -Body $JsonBody id : 19 category : @{id=45; name=Whatever} name : Dawg photoUrls : {string} tags : {@{id=0; name=string}} status : available При создании объекта он обычно получает созданный для подтверждения объект. Использование DELETE. Метод DELETE используется для удаления данных, а применение очень схоже с методом GET. PS51 > Invoke-RestMethod -Method DELETE -ContentType "application/json" -Uri "https://petstore.swagger.io/v2/pet/1" Только убедитесь, что не удалите ничего важного Использование PUT Метод PUT используется для обновления данных. Это делается аналогично методу POST путем представления полного или частичного объекта JSON: PS51> $Body = [PSCustomObject]@{ id = 19 name = "Dawg with a new name" } PS51> $JsonBody = $Body | ConvertTo-Json PS51> $Uri = "https://petstore.swagger.io/v2/pet" PS51> Invoke-RestMethod -ContentType "application/json" -Uri $Uri -Method PUT -Body $JsonBody id name photoUrls tags -- ---- --------- ---- 19 Dawg with a new name {} {} Обычно API REST возвращает объект JSON с использованными и/или обновленными данными. Можно увидеть, что объект был обновлен с помощью метода GET: PS 51> Invoke-RestMethod -ContentType "application/json" -Uri "https://petstore.swagger.io/v2/pet/19" id : 19 category : @{id=45; name=Whatever} name : Dawg with a new name photoUrls : {string} tags : {@{id=0; name=string}} status : available Создание функций Писать эти команды каждый раз вручную может стать довольно утомительным и на самом деле не масштабируемым. Если мы вызываем конечную точку несколько раз, то лучше создать для нее функцию. Это довольно просто и нужно написать всего несколько строк: Function Get-PetstorePet { [cmdletbinding()] param( # Id of the pet [Parameter(Mandatory,ValueFromPipeline)] [int]$Id ) Begin{} Process{ $RestMethodParams = @{ Uri = "https://petstore.swagger.io/v2/pet/$Id" ContentType = "application/json" Method = "GET" } Invoke-RestMethod @RestMethodParams } End{} } После создания функции ее можно вызвать в сценарии: PS51> Get-PetstorePet -Id 1 id name photoUrls tags -- ---- --------- ---- 1 Doggie {http://picture.url} {} Это можно сделать и для метода POST для создания нового объекта pet в Petstore: Function Add-PetstorePet { [cmdletbinding()] param( # Id of the pet [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [int]$Id, # Name of the pet [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string]$Name, # Status of the pet (available, sold etc) [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string]$Status, # Id of the pet category [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [int]$CategoryId, # Name of the pet category [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string]$CategoryName, # URLs to photos of the pet [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string[]]$PhotoUrls, # Tags of the pets as hashtable array: @{Id=1;Name="Dog"} [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [Hashtable[]]$Tags ) Begin{} Process{ $Body = @{ id = $Id category = @{ id = $CategoryId name = $CategoryName } name = $Name photoUrls = $PhotoUrls tags = $Tags status = $Status } $BodyJson = $Body | ConvertTo-Json $RestMethodParams = @{ Uri = "https://petstore.swagger.io/v2/pet/" ContentType = "application/json" Method = "Post" Body = $BodyJson } Invoke-RestMethod @RestMethodParams } End{} } И вызов этой функции PowerShell намного упрощает задачу: PS51> $AddPetStorePetsParams = @{ Id = 44 Name = "Birdie" Status = "available" CategoryId = 50 CategoryName = "Hawks" PhotoUrls = "https://images.contoso.com/hawk.jpg" Tags = @( @{ Id=10 Name="Not eagles" } ) } PS51> Add-PetStorePet @AddPetStorePetsParams id : 44 category : @{id=50; name=Hawks} name : Birdie photoUrls : {https://images.domain.com/hawk.jpg} tags : {@{id=0}} status : available Возможно, что многие модули, которые вы ежедневно используете, состоят из функций, который за кулисами используют REST API. Заключение Обучение работы с REST API, главным образом основано на чтении документации. Мы использовали документацию на основе SWAGGER в этом посте, так как она представляет, как могут выглядеть другие стили документации. Кроме того, преобразование вызовов API в функцию может сэкономить много времени, упростить работу и очистить сценарии.
img
Мы уже рассказывали про Asterisk Manager Interface (AMI) в предыдущих статьях. Если кратко – AMI интерфейс служит для получения команд от внешних приложений на управление АТС – инициацию вызовов, например. Как правило, приложения, которые используют AMI именно внешние и подключаются с других хостов. Именно поэтому, необходимо наверняка знать – работает ли AMI корректно? Об это и поговорим. Windows: проверка Telnet Самый просто способ проверки – проверка с помощью Telnet. Нам нужно просто указать IP – адрес и порт AMI (как правило, это 5038, если не меняли) и выполнить телнет коннекцию. Проверку надежнее всего проводить с хоста, с которого будет подключаться ваше приложение, так как AMI имеет возможность фильтрации по IP; В качестве клиента мы воспользуемся Putty. Открываем клиент и указываем следующее: Host Name (or IP address) - IP – адрес вашего сервера с Asterisk; Port - 5038, стандартный порт AMI (если вы его не меняли); Connection Type - отмечаем Telnet; Выполняем подключение. Если все работает хорошо, то вы увидите следующее: Linux: проверка Telnet Если вы хотите выполнить проверку с Linux – based машины, то просто дайте следующую команду в консоли: [admin@merionet ~]# telnet 192.168.1.14 5038 Trying 192.168.1.14... Connected to localhost. Escape character is '^]'. Asterisk Call Manager/2.8.0
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59