Командный забег в лагерь Лонгхорна. Из командной строки управляем основными функциями Win2k8Сергей «grinder» Яремчук (grinder@ua.fm, tux.in.ua) Операционные системы семейства Windows, в том числе и серверных версий, всегда ассоциировались с графическим интерфейсом, который считается более понятным при настройках, не говоря уже о простоте освоения новичками. Возможностям командной строки в различных руководствах редко уделяется внимание, и часто через некоторое время админ с удивлением обнаруживает, что многие операции удобнее производить именно из консоли. Диспетчер сервера в консолиДиспетчер сервера (Server Manager), появившийся в Win2k8, заменил десяток утилит из группы Computer Management в Win2k3. Это очень удобный инструмент, – в одном месте собраны все настройки. Но кроме графического Server Manager, в состав сервера входит и командная утилита ServerManagerCmd.exe, при помощи которой также можно управлять рядом настроек. Например, чтобы с ее помощью просмотреть список всех ролей и компонентов, имеющихся на сервере, используем параметр
В ответ получим довольно большой список. Установленные роли и компоненты будут отмечены крестиком и визуально выделены зеленым цветом. Результат выполнения команды можно сохранить в файл формата XML, указав последним аргументом его имя:
Внутри образованного файла будет несколько десятков строк вроде этой:
Последним в описании роли или компонента в квадратных скобках идет идентификатор команды
Но нужно быть внимательным при выборе Id. Возьмем такие, казалось бы, похожие строки:
При установке Web-Server будут автоматически добавлены все роли, относящиеся к IIS, – то есть ASP, ASP.NET, CGI, Web Security и другие. Дополнительные компоненты для Web-WebServer необходимо указать самостоятельно. Дабы уберечь админа от лишних экспериментов, предусмотрен полезный параметр '-whatIf' («А что если»). При его использовании само действие выполняться не будет, но покажут все Id, которые планируются к установке/удалению, а также дополнительную информацию (потребуется ли перезагрузка). В последнем случае, чтобы не производить перезагрузку вручную, просто добавляем ключ '-restart' к вызову ServerManagerCmd. Некоторые роли или компоненты требуют наличия других компонентов. Чтобы установить все зависимости, добавь
Параметр Добавлю, что утилита ServerManagerCmd в Server Core отсутствует, а одновременное использование графической и командной оболочек Server Manager вызовет ошибку. Полезные параметры NetshОб утилите Netsh (network shell) написано довольно много, а, учитывая ее важность и отличия реализации в разных версиях Windows, со временем напишут еще больше. Появилась Netsh в процессе создания Win2k под влиянием продукции Cisco (тогда Microsoft и Cisco Systems имели общие интересы). С ее помощью легко можно просмотреть и изменить сетевые настройки как локальных, так и удаленных систем, управлять настройками WFAS (Windows Firewall with Advanced Security), диагностировать и восстанавливать работу сетевого интерфейса и многое другое. Утилита может работать в автономном и пакетном (то есть, запуск набора команд из сценария) режимах. Группы настроек, относящихся к конкретному сетевому компоненту, в терминологии Netsh называются контекстом. Доступные контексты реализуются посредством подключения DLL, и в разных версиях Windows их свойства и возможности несколько отличаются, поэтому руководства для Netsh от других систем к Win2k8 подходят лишь частично. Чтобы получить помощь по доступным контекстам, открываем консоль CMD.exe и вводим «netsh /?». Получив список контекстов (в Win2k8 их 15, остальные - вспомогательные команды), идем дальше. Например, чтобы узнать команды контекста interface, вводим «netsh interface /?». Как вариант, все команды можно вводить, перемещаясь по контексту к субконтекстам и параметрам. Другими словами, сначала вводим «netsh» и, получив приглашение консоли «netsh>», вводим следующую команду, – после чего вид приглашения изменится. Чтобы вернуться на уровень вверх, набираем две точки: «..». Также нужно знать, что Netsh работает в одном из двух режимов: интерактивный (online) и автономный (offline). В online все команды выполняются сразу после того, как закончен их ввод. Режим offline позволяет ввести несколько настроек, а затем все их одновременно активировать, введя последней команду commit (отмена - flush) или переключившись в online-режим. Чтобы узнать, в каком режиме сейчас находится Netsh, используем "show mode". Для установки требуемого режима введи online или offline. Например, посмотрим текущие настройки интерфейсов:
Сценарий конфигурации интерфейсов смотрим при помощи «interface dump», при необходимости перенаправляя вывод в файл:
Полученный таким образом файл можно использовать как шаблон для настройки других компьютеров сети. Для того чтобы указать утилите на файл сценариев, используем флаг '–f'. Для удобства Netsh предлагает возможность задания псевдонимов (alias), которыми можно заменить длинные команды. Например, зададим псевдоним showip, позволяющий получить IP-адрес интерфейса:
Проверяем:
Чтобы установить IP-адрес интерфейса, вместо show используем set:
В этом примере интерфейсу задан IP-адрес 192.168.0.10 с соответствующей сетевой маской и шлюзом 192.168.0.1. Динамический адрес задается проще:
Заменив в этом примере set на add, можно указать сетевому интерфейсу второй IP-адрес:
В Сети нетрудно найти несколько ресурсов, предлагающих в удобной форме сгенерировать нужную команду для Netsh. Например, по адресу platformlabs.com/bag/net.htm находится генератор команд для привязки IP-адресов к сетевому интерфейсу. При помощи Netsh можно управлять настройками не только локальной, но и одновременно нескольких удаленных машин. В этом случае используется ключ '–r' (или команда «set machine»), после которого указываются WINS/UNC/DNS имена или IP-адреса. Для доступа используем ключ '–u' – после него задаем учетную запись, от имени которой будем производить действие, и '–p' – для пароля:
В этом примере мы запросили сетевые настройки на трех системах, на которые указали при помощи WINS/UNC/DNS имен. Аналогично происходит работа и в других контекстах. Используя справку и немного поэкспериментировав, разобраться во всем легко. Мы же подробнее рассмотрим настройку WFAS. Настройка WFAS при помощи NetshКонтексты advfirewall и firewall позволяют просматривать и управлять настройками встроенного в Win2k8 межсетевого экрана. В WFAS встроено три профиля: доменный (Domain), частный (Private) и общий (Public). Чтобы просмотреть их установки, вводим следующие команды:
Контекст firewall (он же advfirewall firewall) непосредственно отвечает за правила брандмауэра. WFAS после установки уже имеет целый ряд заранее подготовленных правил:
Приготовься, вывод будет очень большой, поэтому для анализа лучше задать перенаправление в файл. Для каждого правила будут показаны его имя, статус (включено/выключено), направление, профиль, локальный/удаленный адрес и порт. Взяв любое из них, можно на его основе легко создать собственные правила.
Тем, кто создавал правила при помощи графической утилиты, назначение основных параметров должно быть понятно. Так, ключ name задает имя правилу (должно быть уникальным, all зарезервировано). Если создать несколько правил с одним именем, то они будут рассматриваться как одно правило. Скажем, вместо одного, можно задать семь правил Также как и для остальных контекстов, параметр dump позволяет просмотреть и сохранить сценарий настройки в файл. Затем его можно использовать как шаблон в других системах. Не менее полезными являются команды субконтекста «netsh firewall set». К примеру, чтобы полностью отключить брандмауэр, достаточно ввести:
Для включения, соответственно, меняем disable на enable. Используя netsh, очень просто открыть или закрыть порт:
По умолчанию порт открывается (mode=ENABLE). Чтобы закрыть доступ к порту, используем mode=DISABLE. Можно ограничить доступ к порту только из определенных IP-адресов или сетей:
Теперь доступ к порту 110 открыт только для компьютеров из сети 192.168.0.0. Аналогично портам есть возможность блокировки разрешения/доступа для определенных программ – «set allowedprogram». При помощи «set logging» настраивается журналирование работы WFAS. Служба удаленного управления WinRMВ Vista, Win2k3 R2 и Win2k8 включены мощные средства командной строки, предлагающие системным администраторам улучшенные возможности удаленного управления и удаленного выполнения программ на машинах с Windows. Речь идет о службе удаленного управления WinRM (Windows Remote Management) и ее клиентской части WinRS (Windows Remote Shell). Перед использованием следует узнать, что служба WinRM должна быть запущена на обеих системах, участвующих в управлении, а все узлы должны быть членами одного домена. Подключение производится через стандартные порты 80/443 (HTTP/S), что не требует перестройки правил межсетевого экрана. Если порты уже «заняты» IIS, то это не помеха, так как WinRM способен обнаружить «свой» код в потоке. Для выполнения задач используется база данных инструментария управления Windows - WMI (Windows Management Instrumentation). В Win2k8 WinRM уже установлен, но по умолчанию не включен. Проверим это и перейдем к настройке:
Собственно, будет задан всего один вопрос - хотим ли разрешить удаленный доступ. Отвечаем «y», утилита сообщит об активации WinRM и создании правила исключения для Windows Firewall. Для проверки работы можно снова выполнить первую команду, которая выведет данные о новом Listener.
По умолчанию используется http, локальный узел и текущие учетные записи. Вот так мы получим вывод ipconfig на локальной системе:
А теперь выполним ту же команду на удаленной системе server.com через 80-ый порт:
Остановить выполнение команды с внушительным выводом можно при помощи комбинации <Ctrl+C> или <Ctrl+Break>.
Полезные мелочиКроме специфических для Win2k8, никуда не делись стандартные утилиты, которые будут полезны в повседневной работе. Так, ipconfig используется для просмотра настроек сетевых интерфейсов и обновления параметров DHCP и DNS. Чтобы получить текущие настройки адаптеров, достаточно запустить утилиту без дополнительных аргументов. Ключ '/all' позволит увидеть чуть большее количество параметров. Для просмотра содержимого DNS-кэша используй ключ '/displaydns'. В результате получаем таблицу с данными: имя узла, адрес, срок жизни и так далее. Чтобы очистить DNS-кэш, вводим:
При настройке правил WFAS может понадобиться информация о привязке программ и служб к открытым портам. Получить список открытых портов можно при помощи команды netstat. Ключей у нее много, для нашей задачи полезными будут четыре:
Смотрим:
Периодически следует запускать эту команду, чтобы контролировать изменения, происходящие в системе. При ручном контроле можно использовать команду find, чтобы отобрать информацию по определенному критерию:
Как вариант, можно сохранить вывод в файл, а затем сравнить старый и новый файл при помощи утилиты fc. Например, так:
Без параметров tasklist выведет таблицу всех процессов. Используя дополнительные ключи, можно узнать больше о процессе с нужным PID:
В результате получим список служб (ключ '/SVC'), связанных с процессом, имеющим идентификатор 1024. INFO
WWW
|