По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Для того, чтобы начать разговор про загрузчиков, для начала необходимо понимать, как разбиваются жесткие диски и систему их разбиения. MBR Master Boot Record это первые 512 Байт диска, это не раздел, не партиция это участок места в начале жесткого диска, зарезервированный для загрузчика Операционной системы и таблицы разделов. Когда компьютер включается BIOS производит тестовые процедуры. После чего, передает код управления начальному загрузчику, который как раз расположен в первых байтах MBR. Причем, какому жесткому диску передавать управление мы определяем самостоятельно в соответствующих настройках BIOS. MBR это очень важная часть нашего жесткого диска, потеря его чревата потерей данных с нашего жесткого диска или невозможностью загрузится. Поэтому ранее возникала потребность в резервном копировании данной части жесткого диска. Но это было достаточно давно. В настоящее время большинство машин не использует BIOS, а использует UEFI это современная замена BIOS, которая более функциональнее и имеет больше плюсов. Нужно понимать, что UEFI это более защищенная загрузка и более скоростная, потому что позволяет инициализировать параллельно различные интерфейсы и различную последовательность команд. Так вот если у нас не BIOS, а UEFI, то HDD будет разбит не по принципу MBR, а по принципу GPT - GUID Partition table. Это другой формат размещения таблицы разделов. Это UEFI, а UEFI использует GPT там, где BIOS использует MBR. GPT для сохранения преемственности и работы старых операционных систем оставила в самом начали диска блок для MBR. Разница изначально между MBR и GPT, в том, что MBR использует адресацию типа цилиндр, головка, сектор, а GPT использует логические блоки, LBA0, LBA1, LBA2. А также для GPT необходимо понимать, что есть логическое дублирование оглавление таблицы разделов записано, как в начале, так и в конце диска. И в принципе для организации резервного копирования Linux в принципе ничего не предлагает. Но в случае если у нас MBR это необходимо делать. Для начала надо нам понять, что и куда у нас смонтировано какой раздел у нас является загрузочным и его скопировать. Вводим команду fdisk l и видим следующее: Устройство /dev/sda1 является загрузочным и, следовательно, на нем находится MBR. Команда, которая осуществляет резервное копирование она простая - это dd. Это утилита, которая позволяет копировать и конвертировать файлы. Главное отличие данной утилиты в том, что она позволяет это делать по секторно, т.е. она учитывает геометрию диска. Использование: dd if=/dev/sda of=/root/backup.mbr bs=512 count=1. if что мы копируем, of - куда мы это копируем, bs что мы копируем 1 блок размера 512, count - количество блоков. Только, что мы скопировали первый блок жесткого диска, это то самое место, где на жестком диске находится MBR. Загрузчики Первый загрузчик Lilo Linux Loader Это был самый популярный загрузчик для Linux и для Unix систем в целом, он не зависел от файловой системы, мог загружать ОС с жесткого диска или с дискеты. Из этого выходила его особенность, загрузчик Lilo хранил в своем теле положение ядер и пункты меню и требовал обновления себя с помощью специальной утилиты, можно было поместить до 16 пунктов меню при загрузке. Данного загрузчика уже нету во многих дистрибутивах ОС Linux. В настоящее время повсеместно используется загрузчик GRUB2, но мы можем поставить загрузчик Lilo, чтобы с ним разобраться. Установка довольно-таки банальная apt-get install lilo. В процессе установки выскакивает предупреждение, что это первая установка lilo, после установки необходимо будет исполнить команду, а затем запустить непосредственно загрузчик, который применит непосредственно все изменения. Нажимаем ОК. Далее запускаем liloconfig. Ничего не произошло, просто утилита создала файл и этот файл является файлом конфигурации. С помощью команды cat /etc/lilo.conf мы можем посмотреть файл конфигурации загрузчика. В заголовке файла написано сразу, что после внесения изменений необходимо выполнить команду lilo, чтобы он сразу применил их. Далее идут основные параметры конфигурационного файла. Первый параметр lba32. Вот он как раз и меняет ту самую традиционную конфигурацию цилинд-головка-сектор, на logical block адреса, что позволяет работать с большими дисками. В разделе boot мы должны указать на каком диске у нас находится MBR. Если внимательно посмотреть, то можно увидеть подсказку, где посмотреть /dev/disks/by-id/ata* uuid дисков. После, чего можно скопировать имя диска и вставить его и тогда его сможет загружать. Lilo узнает, где MBR и будет оттуда загружать систему. Verbose = 1 Verbose level - это параметр, который показывает сколько выводить информации при загрузке. Install = menu - Данный параметр отвечает, как будет выглядеть меню загрузки. Lilo предлагает 3 варианта. И для каждого варианта, есть внизу дополнительные закомментированные параметры. Prompt это параметр отвечает за ожидание пользователя, его реакции. По умолчанию 10сек. Значение параметра в децасекундах. Далее мы можем посмотреть, где находятся ядра нашей операционной системы. Когда мы запустили liloconfig загрузчик нашел наши ядра операционной системы. Как видно на скриншоте определил версию ядра, определил где будет корневая файловая система. Смонтировал в режиме read-only. В данных параметрах мы может отредактировать строчку lable, чтобы переименовать отображение при загрузке. Если есть желание можно отредактировать данный файл и добавить еще ядро, если установлена вторая OS. Загрузчик GRUB Старый загрузчик GRUB эта та версия загрузчика, который использовался с Lilo. Тогда Lilo был самый распространенный. Теперь данный загрузчик называется Grub legacy. Больше никак не развивается, для него выходят только патчи и обновления и его даже невозможно установить на новые операционные системы. Т.к. команды и инструментарий используется одинаковый, как для старого GRUB, так и для нового. Далее мы будем рассматривать современный вариант загрузчика GRUB 2. Вот так он при загрузке примерно выглядит. Загрузчик GRUB 2 был полностью переделал и имеет мало чего общего с предыдущим загрузчиком. Он может загружать любую ОС и передавать загрузку, так же другому загрузчику, альтернативной ОС. Например, MS Windows это NTDLR. Является самым популярным загрузчиком на сегодня и стоит по умолчанию в подавляющем количестве операционных систем типа Linux. Если, что-то случилось, например кто-то переставил на загрузчик lilo, мы можем вернуть загрузчик Grub обратно командой grub-install /dev/sda. Можно узнать версию загрузчика следующим способом grub-install version. Основной файл конфигурации можно посмотреть cat /boot/grub/grub.cfg. Файл настройки и конфигурации, достаточно сильно отличается от файла конфигурации lilo или первой версии GRUB. Данный файл не редактируется, т.к он создается скриптами с использованием нескольких настроечных файлов, которые мы можем найти в папке /etc/grub.d с использованием настроек файла /etc/default/grub. Примерно так выглядит файл настроек для загрузки. И здесь в более или менее в понятном нам виде находятся настройки. И данные настройки определяют поведение. Например, grub_default = 0 устанавливает ядро для запуска по умолчанию, параметр grub_hidden_timeout = 0 обозначает использоваться пустой экран. grub_hidden_timeout_quiet = true - это утверждает, что будет использоваться пустой экран.Т.е загрузка будет происходить в скрытом режим и мы не увидим. Далее обычный таймаут ожидание действий пользователя. Grub_cmdlin_linux_default = quiet тихий режим, splash - это заставка. Отредактировать данный файл возможно в редакторе. Второй путь к папке /etc/grub.d в ней лежат исполняемые файлы. Данные файлы сканируют, также ядра при необходимости добавят нужные параметры в загрузчик. Мы всегда можем добавить опцию и написать скрипт. Для применения настроек в загрузчике, надо выполнить update-grub.
img
Сейчас все большие и больше людей начинают работать из дома на своих корпоративных или личных устройствах. И часто таким сотрудникам нужен доступ в корпоративную сеть. С помощью Cisco AnyConnect Secure Mobility можно предоставить необходимый удаленный доступ, при этом обеспечив необходимый уровень безопасности. В этой статье мы расскажем как установить Cisco AnyConnect и как с его помощью подключиться к VPN. Обзор Cisco AnyConnect Cisco AnyConnect это VPN клиент (который является развитием Cisco VPN Client), позволяющий вам устанавливать защитное подключение к корпоративной сети. Cisco AnyConnect включает в себя такие функции, как удаленный доступ, контроль состояния, функции веб-безопасности и защита в роуминге. Клиент доступен на огромном количестве платформ: Windows macOS Linux iOS Android Windows Phone/Mobile BlackBerry ChromeOS Интересная особенность AnyConnect заключается в том, что это модульный программный продукт. Он не только обеспечивает VPN-доступ через Secure Sockets Layer (SSL) и IPsec IKEv2, но также обеспечивает повышенную безопасность с помощью различных встроенных модулей. Помимо VPN-подключения, основные преимущества AnyConnect включают безопасность конечных точек для предприятий, телеметрию, веб-безопасность, управление доступом к сети и так далее. Установка Cisco AnyConnect Загрузите последнюю версию Cisco AnyConnect. Обратите внимание, что вам нужно иметь активную подписку AnyConnect Apex, Plus или VPN Only с Cisco для загрузки последней версии программного обеспечения клиента AnyConnect VPN. Просто войдите в систему, используя свой идентификатор Cisco и пароль, и вы сможете загрузить программное обеспечение без проблем. Если вы являетесь пользователем Windows 10, вы можете легко загрузить VPN-клиент Cisco AnyConnect из Магазина Windows. Существует никаких ограничений на загрузку, и это бесплатно. Для обычных конечных пользователей чаще всего установочные файлы предоставляют администраторы, поэтому для них нет необходимости скачивать их отдельно. Также в большинстве случаев администраторы сами устанавливают AnyConnect на ПК пользователя, поэтому можно перейти сразу к следующему пункту. Версия клиента AnyConnect для Windows поставляется в виде Zip-файла. Вам нужно будет разархивировать все содержимое zip-файла, чтобы запустить установку. Есть два установочных файла, setup.hta и setup.exe. Запуск любого из файлов установки откроет окно выбора установщика: Вы можете выбрать компоненты, которые вы хотите установить с этой версией клиента Cisco VPN. Подключение Cisco AnyConnect Использовать AnyConnect с точки зрения клиента довольно просто. Вам просто нужно запустить AnyConnect, указать URL-адрес сервера, имя пользователя и пароль, и он просто подключится. Мы дадим вам наш пошаговый обзор того, как запустить AnyConnect и отключиться от VPN при необходимости. Убедитесь, что вы успешно установили AnyConnect. Для запуска VPN-клиента выполните следующие действия: Откройте Cisco AnyConnect Secure Mobility Client из меню Пуск Выберите соединение из выпадающего меню. Если это поле пустое, вы должны вручную ввести URL-адрес сервера. В большинстве случаев сетевые администраторы настраивают профиль VPN для пользователей. Таким образом, подключение по умолчанию будет автоматически указано в раскрывающемся меню Нажмите Подключиться или Connect Вам будет предложено ввести имя пользователя и пароль После ввода учетных данных нажмите ОК Как только соединение установлено, AnyConnect автоматически свернет себя в системном трее. Теперь вы можете безопасно просматривать ресурсы в удаленной сети. Весь трафик проходит через VPN-туннель, что означает, что никто не может прочитать информацию, кроме сервера и клиента. Чтобы отключиться от VPN, дважды щелкните значок AnyConnect на панели задач и нажмите кнопку Отключить или Disconnect.
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 в функцию может сэкономить много времени, упростить работу и очистить сценарии.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59