7 полезных командных инструментов для работы со сценариями

Существует два позитивных признака, которые позволяют сделать благоприятный прогноз относительно будущего командных сценариев. Первый из них — число новых инструментов, выпускаемых независимыми поставщиками, а второй — наличие во многих из этих инструментов встроенных функций синтаксического разбора входных файлов. Администраторы, освоившие применение команды For для разбора входных файлов и вызова команд, возможно, не придают этим встроенным функциям особого значения, но, по крайней мере, разработчики утилит наконец начинают понимать, что этот инструментарий часто применяется не к одному узлу, а к сотням и даже тысячам узлов.

Есть ли другие, менее очевидные преимущества у инструментов со встроенными функциями синтаксического анализа? Как минимум, одно существенное. При использовании Task Scheduler для планирования заданий появляется новый вариант: вместо запуска сценария, вызывающего инструмент, можно обратиться к странице Properties задания и ввести команды непосредственно в строку Run. Бывает, что даже после остановки сценарного задания в Task Scheduler запущенный сценарием процесс продолжает работать до тех пор, пока не будет обнаружен и удален администратором. При остановке задания, указанного непосредственно в строке Run, — такого, как инструмент BeyondExec (beyondexecv2.exe), рассматриваемый в данной статье, он уничтожается. Продолжить работу сможет только процесс на удаленной машине, который выполняется до завершения работы.

Недавно я обнаружил семь превосходных инструментов командной строки на сайте Beyond Logic (http://www.beyondlogic.org). Все эти утилиты будут полезным дополнением к командному инструментальному набору, но в данной статье речь пойдет в основном о BeyondExec, инструменте дистанционного порождения и закрытия процессов. Для просмотра оперативной подсказки инструмента нужно воспользоваться стандартной командой

Beyondexecv2.exe /?

В оперативной справке описаны очень полезные параметры, которые приведены в таблице.

Таблица Назначение ключей BeyondExec
КлючДействие
-uПредоставляет имя учетной записи с административными полномочиями на удаленной машине.
-pПредоставляет пароль для указанной выше учетной записи.
-sИспользовать учетную запись System.
-iРазрешение взаимодействия процесса с рабочим столом.
-tЗавершение процесса через указанное число секунд.
-qУказать приоритет. Параметры — AboveNormal, BelowNormal, HighPriority, Idle, Normal и Realtime.
-cКопирование файла на удаленный компьютер перед выполнением (стандартный уровень безопасности).
-csКопирование файла на удаленный компьютер перед выполнением (назначенный уровень безопасности).
-wНе ожидать завершения процесса, немедленный возврат управления.
-bОбход проверок удаленных драйверов (предполагается, что драйвер уже активен).
-dОстановка компьютера. Параметры — Hibernate, LockWorkstation, Logoff, PowerOff, Reboot, Shutdown и Suspend.
-fПринудительное завершение приложения.
-mВывод на дисплей сообщения для пользователя.
-lВывод сообщения на дисплей в течение указанного числа секунд (по умолчанию — 60 с).
-xЗапрет отмены процедуры остановки пользователем (деактивация кнопки).
-nИгнорировать используемые компьютеры.
-gИспользовать несколько компьютеров, перечисленных в файле со списком.
-rОстановить и удалить драйвер BeyondExec на удаленных компьютерах.

Завершение процесса

Чтобы оценить возможности инструмента и познакомиться с функциями завершения процессов, рассмотрим пример исходного кода. Предположим, что требуется заблокировать рабочие станции на ночь. Но некоторые пользователи отключили хранители экранов с паролем или увеличили время задержки для запуска хранителя экранов, так как стандартное значение было для них неудобным. Такие действия могут быть опасными для системы, если посторонний получит доступ к компьютерам и воспользуется контекстом безопасности зарегистрированного пользователя для доступа к конфиденциальным данным. Кроме того, некоторые пользователи часто задерживаются на работе. Заблокировать все рабочие станции, но при этом дать продолжающим работать пользователям возможность отменить блокировку в течение двух минут (если сетевое соединение еще активно) можно с помощью следующей команды:

Beyondexecv2.exe

-g «D:serverlist.txt»

-d LockWorkstation

-m «Locking Workstation Now»

-l 120

Всю команду следует вводить в одной строке. Ключ -g указывает входной список, а ключ -d задает действие (в данном случае — LockWorkstation). Можно задать действия Hibernate, Logoff, PowerOff, Reboot, Shutdown и Suspend, так что администратору предоставляется большая гибкость в определении действий, выполняемых на удаленной рабочей станции. Ключ -m задает сообщение для пользователя, а ключ -l — длительность отображения сообщения (в секундах). Если пропустить ключ -l, то по умолчанию задержка составляет 60 секунд.

Чтобы воспрепятствовать отмене команд администратора пользователями, можно блокировать отображаемую по умолчанию кнопку Cancel, деактивировав ее с помощью ключа -x. На уже заблокированной целевой рабочей станции действия Logout, Reboot и Shutdown будут выполнены некорректно, если не указан ключ -f, который принудительно завершает приложения. Действия Hibernate и Suspend на заблокированной рабочей станции функционируют корректно.

Иногда нужно перезагрузить или остановить один компьютер или группу удаленных компьютеров, не устанавливая удаленного клиента на целевых машинах. Следующая команда демонстрирует, что сделать это просто. Пример команды перезагружает компьютеры, перечисленные в файле serverlist.txt. В данном примере время задержки превышает стандартные 60 секунд (-l), приложения завершаются принудительно (-f), а пользователь не может отменить перезагрузку (-x)

Beyondexecv2.exe

-g «D:serverlist.txt»

-d Reboot

-m «Через 2 минуты система будет

остановлена и перезапущена.

Сохраните работу и закройте

все приложения»

-l 120 -f -x

При локальном использовании Task Scheduler для регулярных перезагрузок или остановок нескольких компьютеров может пригодиться другой компактный инструмент компании Beyond Logic. Shutdown.exe — небольшая (44 Кбайт) утилита для остановки одного компьютера с упрощенным подмножеством функций BeyondExec. Нужно лишь внимательно изучить назначение ключей, так как оно слегка отличается от полнофункционального инструмента BeyondExec.

Порождение подпроцессов

Рассмотрим функции порождения подпроцессов BeyondExec. Все больше команд Microsoft можно выполнять как локально, так и дистанционно, и со временем инструментарий порождения подпроцессов уже не будет так необходим администратору, но пока эти утилиты занимают важное место в наборе для подготовки сценариев.

Каждый раз, когда необходимо запустить процессы на удаленных машинах, я вспоминаю старую, но очень полезную утилиту PsExec фирмы Sysinternals, которую можно получить по адресу http://www.sysinternals.com/ntw2k/ freeware/psexec.shtml.

Я часто использую PsExec для запуска сценариев и утилит на удаленных машинах. Возможен вопрос, зачем нужен второй инструмент для той же работы, если первый вполне работоспособен. Экспериментировать с различными инструментами с аналогичной функциональностью полезно потому, что иногда в силу некоторых нюансов один из инструментов более пригоден для решения конкретной задачи.

С помощью PsExec можно посылать команды как на компьютеры, перечисленные в списке, так и в целый домен компьютеров и назначать приоритеты для удаленных процессов. В отличие от PsExec, BeyondExec может сочетать рассылку команд остановки с командами на установку. Поэтому утилита идеально подходит для работы с пакетами обновлений и исправлениями, требующими перезагрузки. Кроме того, антивирусная программа McAfee в некоторых случаях воспринимает PsExec как вредную программу, но всегда позволяет беспрепятственно работать BeyondExec. Поэтому по многим причинам лучше иметь в запасе не одну утилиту - всегда полезно экспериментировать с новыми программами.

Ниже приведен пример исходного кода использования BeyondExec для установки Windows 2000 Service Pack 4 (SP4):

Beyondexecv2.exe

-g «D:SPtargetlist.txt»

-c -d reboot -f

-m «На компьютер был установлен Service Pack 4. Перезагрузите компьютер при первой возможности.»

D:SP4SourceFilesw2ksp4_en.exe

-q -n -z

В этом примере используется комбинация ключей BeyondExec (-g, -c, -d, -f и -m) и параметров пакета обновлений Microsoft (-q, -n и -z). Ключ -c копирует выполняемый файл SP4 на целевой компьютер. Назначение ключей пакета обновлений: ключ -q обеспечивает установку в автоматическом режиме, ключ -n запрещает создание резервных файлов на случай отмены установки, а ключ -z предотвращает перезагрузку системы после установки пакета обновлений.

Не разрешая пакету обновлений выполнять перезагрузку, BeyondExec позволяет выбрать для этого более удобное время и выдать пользователю соответствующее сообщение.

Благодаря данному сообщению пользователь может отменить перезагрузку, если ему нужно работать с компьютером, но он знает о необходимости выполнить эту процедуру позже. Подключенные к сети, но не используемые компьютеры будут перезагружены после установки пакета обновлений. Выключенным машинам можно передать пакет Wake-On-LAN (WOL), который переведет их перед началом установки в рабочий режим. Конечно, перед внесением в систему важных изменений, например установкой пакета обновлений или исправления, необходимо тщательно протестировать режимы работы дистанционной установки и параметры пакета обновлений или исправления, прежде чем развертывать их в производственной среде.

Более полную информацию о BeyondExec можно получить на Web-узле Beyond Logic по адресу http://www.beyondlogic.org/consulting/ remoteprocess/BeyondExec.htm. Перед использованием инструмента нужно обязательно познакомиться как с этой документацией, так и с материалами «Справки».

Другие полезные инструменты

Помимо BeyondExec и Shutdown.exe, компания Beyond Logic предлагает еще пять бесплатных утилит. Эти инструменты предназначены для запуска на локальной системе, а параметры конфигурирования немногочисленны или отсутствуют вовсе. В данной статье недостаточно места, чтобы рассмотреть их подробно, но эти интересные утилиты заслуживают упоминания.

  • Bmail.exe — почтовая SMTP-утилита, запускаемая из командной строки. Компактный и простой инструмент — альтернатива Blat. С помощью бесплатного модуля расширения mpack можно работать с вложениями MIME. Mpack можно получить на Web-узле Beyond Logic.
  • Process.exe — запускаемая из командной строки утилита просмотра/уничтожения/приостановки процессов. Она поможет справиться с процессами, которые не удается уничтожить в Task Manager. Кроме того, в Process.exe можно просматривать, приостанавливать и назначать приоритет или родственные связи процессов.
  • Delbyowner.exe — утилита удаления/копирования, в которой можно выбирать файлы по их владельцу. Если требуется архивировать или удалять файлы бывших сотрудников, то с помощью Delbyowner.exe удобно отыскивать, копировать и удалять файлы, принадлежавшие конкретному лицу.
  • Compinfo.exe — консольная утилита для сбора информации о компьютере, которая позволяет быстро собрать более подробные данные, чем с помощью srvinfo.exe. Compinfo.exe отображает технические характеристики аппаратных средств, в том числе информацию о процессоре, операционной системе, пакете обновлений, физической и виртуальной памяти, сетевом адресе, логических дисках, видеоплате, жестком диске, накопителе CDROM и принтере.
  • Smart.exe обеспечивает доступ к атрибутам SMART (Self-Monitoring Analysis and Reporting Technology — технология активного контроля состояния диска) жесткого диска. Анализируя SMART-совместимый диск с помощью Smart.exe, можно быстро получить сводку информации о состоянии любого диска, не устанавливая программ и не отключая диск.

Действительно, нелегко уследить за всеми новыми инструментами, но затраченные усилия будут вознаграждены. В данной статье был рассмотрен синтаксис инструмента дистанционного запуска и остановки BeyondExec. Кроме того, приведены краткие сведения о других инструментах компании Beyond Logic. Эти утилиты, несомненно, будут полезным дополнением к инструментальному набору администратора.


Старший системный инженер компании Lewis Technology (Риверсайд, штат Калифорния). Имеет сертификаты MCSE и MCT, специализируется на управлении серверами и рабочими станциями Windows Server 2003, Windows 2000 и Windows NT. dlewis@windowsitpro.com