По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Все, кто работали с serial интерфейсами, сталкивались с такими вещами как DCE и DTE. Сегодня постараемся разобраться с этими терминами. Serial интерфейсы используются при подключении роутера к глобальной сети WAN (Wide Area Network) . При этом подключение обычно осуществляется через какое-нибудь устройство провайдера – чаще всего это модем или CSU/DSU (Channel Service Unit/Data Service Unit) . В этой схеме модем или CSU/DSU является DCE (Data Communication Equipment) устройством – то есть оборудованием провайдера, которое определяет скорость канала, преобразует и передает данные от оборудования клиента. А со стороны клиента передает эти данные DTE (Data Terminal Equipment) устройство, которое обычно является маршрутизатором или компьютером. Однако в лаборатории мы можем собрать схему, где маршрутизатор может выступать не только в роли DTE, но и в роли DCE. В этом случае нам нужно определить какую роль будет иметь каждый из маршрутизаторов. Это будет зависеть от serial кабеля, которым мы будем подключать маршрутизаторы – один конец используется для подключения к DCE, а другой к DTE. Обычно на кабелях не написано, какую роль имеет каждый из концов, и поэтому тут нам нужно будет воспользоваться командой show controllers [интерфейс]. Router1>en Router1#show controllers serial 2/0 Interface Serial2/0 Hardware is PowerQUICC MPC860 DCE V.35, no clock idb at 0x81081AC4, driver data structure at 0x81084AC0 Здесь в третьей строчке вывода видно, что к роутеру подключен кабель DCE концом. Это значит, что он исполняет роль DCE, а другой роутер – роль DTE. Теперь, когда мы узнали, кто, есть кто, нам нужно вручную задать скорость работы канала на DCE, поскольку в роли DCE у нас маршрутизатор, а не модем или CSU/DSU, как в реальных сетях. Для этого на интерфейсе мы используем команду clock rate [скорость в битах/с] Router1#conf t Router1(config)#int se 2/0 Router1(config-if)#clock rate ? Speed (bits per second 1200 2400 4800 9600 19200 38400 56000 64000 72000 125000 128000 148000 250000 500000 800000 1000000 1300000 2000000 4000000 <300-4000000> Choose clockrate from list above Router(config-if)#clock rate 64000 После этого можно продолжать конфигурацию. Стоит заметить, что команда clock rate не применится на DTE интерфейсе. Router2(config)#int se2/0 Router2(config-if)#clock rate 64000 This command applies only to DCE interfaces
img
В сегодняшней статье, расскажем как установить последнюю версию операционной системы CentOS 7, в среде виртуализации Hyper-V, по средствам опции сетевой установки или Network Installation. Примечание: В процессе сетевой установки, все файлы и пэкэджи, которые необходимы для операционной системы, будут скачиваться непосредственно из Интернета с зеркала, которое Вы укажете. Поэтому прежде чем воспользоваться данным методом, рекомендуем убедиться, что у Вас хорошее Интернет соединение. Пошаговое видео Подготовка Первое, что необходимо сделать, это скачать специальный загрузочный образ CentOS 7. В зависимости от архитектуры Вашей ОС, он доступен по ссылкам ниже. Например, образ для 64-разрядной системы можно скачать по это ссылке Выбираете любое понравившееся зеркало и открывайте список доступных файлов. Нам необходим образ CentOS 7 Netinstall ISO. Образ для сетевой установки, Netinstall, имеет размер всего лишь приблизительно 386 Мегабайт, тогда как полный образ CentOS 7 весит порядка 4 Гигабайт. Это связано с тем, что в образе Netinstall находятся только метаданные, позволяющие выбрать, с каким именно функционалом будет установлена операционная система. Установка Итак, давайте приступим к установке. Запускаем Hyper-V Manager и первое, что необходимо сделать это создать виртуальный свич. Для этого нажимаем Virtual Switch Manager → New virtual network switch → External и нажать Create Virtual Switch. И выбираем сетевую карту, которую нужно использовать для подключения виртуальных машин к сети и кликаем OK. Теперь приступим непосредственно к созданию виртуальной машины. Для этого нажимаем New → Virtual machine, задаём машине имя и кликаем Next. Поколение (Generation) виртуальной машины оставляем первое - Generation 1 Далее нужно выделить объём оперативной памяти, которая будет использоваться данной виртуальной машиной. По умолчанию - это 1 гигабайт (1024 MB) и для наших целей этого вполне достаточно. Далее необходимо выбрать виртуальный свич (Virtual Switch), который будет использоваться для подключения к сети нашей виртуальной машины. В нашем случае – это VSWITCH_1. Далее создаём виртуальный жёсткий диск для установки на него операционной системы CentOS 7. Выберем размер 15 Гигабайт и укажем путь на нашем локальном компьютере, где будет храниться образ данного виртуального жесткого диска. Рекомендуем выбирать место на диске D:// Далее необходимо указать способ загрузки образа нашей виртуальной машиной. Выбираем Install an operating system from bootable CD/DVD ROM → Image file и указываем путь к нашему недавно скачанному образу CentOS7 Netinstall. Итак, виртуальная машина создана. Подключаемся к ней и выбираем Install CentOS Linux 7 Через некоторое время, перед нами открывается помощник установки. Опции установщика разделяются на три части: Localization, Software и System. В части Localization, настраивается системное время, раскладки клавиатуры и поддерживаемые языки. В части Software, мы указываем источник, откуда будут загружаться файлы для нашей операционной системы и необходимый функционал. И в части System настраиваем куда будет устанавливаться наша операционная система, политики безопасности и сетевые опции. Поскольку в процессе сетевой установки все файлы для CentOS 7 будут скачиваться из Интернета, необходимо подключить наш виртуальный сервер с операционной системой к сети. Для этого выбираем Network and Hostname и “включаем” сеть, передвинув ползунок в положение ON. Тем самым мы задействовали наш виртуальный свич. Теперь можно указывать путь к репозиторию, откуда мы хотим загружать файлы. Выбираем Installation Source и в появившемся окне указываем путь. Я укажу репозиторий CentOS - http://mirror.centos.org/centos/7/os/x86_64/ После этого, начнётся скачивание метаданных и спустя какое то время, источник будет выбран и мы увидим адрес репозитория, который указали. В разделе Software Selection можно выбрать функционал, для целей которого будет использоваться сервер. Теперь всё готово к установке, нажимаем Begin Installation. Пока идёт установка, можно настроить пароль для root пользователя системы. Процесс установки может занимать от 15 до 30 минут, это напрямую зависит от характеристик Вашего компьютера. Как только установка будет закончена, нам предложат перезапуститься. Нажимаем кнопку Reboot. После перезагрузки, наш сервер на базе операционной системы CentOS 7 будет готов к использованию. Для доступа на сервер, необходимо ввести реквизиты доступа, которые мы вводили при создании root пользователя.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59