Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 140, СЕНТЯБРЬ 2010 г.

Эникейщик на привязи: Обзор программ для автоматизации рутинных операций

OC Windows завоевала популярность в первую очередь благодаря удобному и понятному интерфейсу. Но если обычный пользователь от этого только выиграл, то для админа кнопочное управление имеет множество неудобств. Конечно, часть задач можно решить за счет консольных команд и скриптов, но далеко не все. И здесь на помощь приходят специальные средства автоматизации.

AutoIt

Одним из самых популярных средств автоматизации у админов является AutoIt (autoitscript.com/autoit3), моделирующий нажатия клавиш, щелканье мышкой и другие подобные действия, которые обычно выполняет пользователь при работе в GUI-приложениях.

Используя AutoIt, все эти движения можно запрограммировать при помощи BASIC-подобного языка. Программа умеет управлять процессами, обращаться к Windows API и DLL, реестру, буферу обмена, файлам (чтение, изменение, удаление), создавать GUI, сообщения, формы для ввода данных, работать с БД (MySQL и SQLite), читать HTML-код, скачивать файлы, отправлять е-mail и многое другое. В общем, все зависит исключительно от желания возиться с настройками. Отрадно, что AutoIt не требует от админа навыков программирования. В скриптах можно легко получить доступ к управляющим элементам окон, написав всего пару строк кода. Однако следует помнить, что AutoIt без проблем работает со стандартными окнами Windows. Если же авторы позаботились об уникальности интерфейса, с настройкой AutoIt придется немного попотеть, чтобы найти нужные параметры.

Поддерживает Windows от 95 до 2k8, в том числе работает и в 64-битных версиях системы, «дружит» с вистовским UAC. Удобно, что сценарии можно скомпилировать в exe’шник и затем выполнить на другой машине. Никаких дополнительных приложений и библиотек при этом не требуется.

Распространяется AutoIt под freeware-лицензией, разрешающей его использование без ограничений, в том числе и с коммерческой целью. Установка стандартна, каких-либо дополнительных требований нет. Текущей версией является 3, которая несовместима по синтаксису с предыдущей, второй версией. Программа поставляется вместе с редактором скриптов SciTE4AutoIt3, утилитой проверки синтаксиса AU3Check.exe, готовыми примерами, компилятором Aut2Exe (и обратным Exe2Aut) и справкой. Во время установки расширение *.au3 будет сопоставлено с интерпретатором AutoIt.

Язык сценариев, применяемый в AutoIt — это одна из его сильных сторон. Он одновременно мощный и простой. Например, чтобы запустить программу, достаточно написать:

Run("calc.exe")

Все, больше никаких действий. С помощью AutoIt очень удобно автоматизировать процесс установки приложений, которые не поддерживают файлы ответов. Чтобы отлавливать окна, для ввода параметров обычно используется функция WinWaitActive, которая прерывает выполнение скрипта до момента активации окна. В качестве параметров функции следует указать заголовок окна и опционально дополнительный текст. Последнее позволяет отличать разные окна одной программы друг от друга. Например, окна инсталлятора самого AutoIt содержат один и тот же заголовок — AutoIt v3.3.6.1.5, то есть, если использовать:

WinWaitActive("AutoIt v3.3.6.1.5")

Эта конструкция будет соответствовать всем шагам инсталлятора. Поэтому лучше уточнить, введя дополнительный текст, который высвечивается в окне, например:

WinWaitActive("AutoIt v3.3.6.1.5", "License Agreement")

Так мы однозначно обратимся к окну лицензионного соглашения. Осталось лишь отправить ему подтверждение: Send("!y")

Как видишь, все просто. Вместе с программами устанавливается также утилита AutoIt Window Info Tool (AU3Info.exe), которая как раз и поможет тебе получить всю инфу по заголовку окна, тексту (отображаемому и скрытому), строке статуса, расположению, цвету и так далее. Просто запускаем и наводим крестик на окно, после чего в Window Info Tool считываем все значения. С его помощью собрать нужные сведения по окну подопытной программы значительно проще. Справка в AutoIt очень подробная, в ней есть все тонкости по использованию языка. В документации на сайте проекта найдешь ссылку на переведенную версию справки. Плюс на многочисленных профильных форумах обычно присутствует отдельная ветка. Какихлибо проблем в изучении AutoIt быть не должно, за один вечер можно научиться писать простые скрипты, сложные решения потребуют, естественно, больших временных затрат.

Xstarter

Еще одна популярная программа для автоматизации рутинных задач сисадмина. Разработчиком является наш соотечественник, Гилев Алексей (xstarter.com/rus), соответственно, xStarter имеет локализованный интерфейс, и самое главное — для русскоязычных пользователей программа распространяется бесплатно.

После установки xStarter может запускаться вручную, автоматически при входе пользователя в систему или стартовать в качестве сервиса Windows. Последний вариант позволяет запускать задание в точно указанное время, вне зависимости от регистрации пользователя в системе и других факторов, лишь бы был включен компьютер. Предлагается периодическое выполнение заданий, составное расписание, установка пропусков и действий для пропущенных заданий, запуск по событию. В общем, вариантов хоть отбавляй. Используя xStarter, можно расширить перечень горячих клавиш или переопределить их значения глобально или локально. Например, легко можно сделать так, чтобы задача выполнялась при нажатии комбинации клавиш <Ctrl+D>, но только в том случае, если запущен Firefox.

Запущенная программа помещается в трей, щелчком по значку вызываем редактор заданий. В окне Секции/Задачи найдем два десятка примеров, как говорится, на все случаи. Включенные задачи помечаются зеленым значком.

Выбираем наиболее близкий по смыслу (или создаем новую задачу), копируем при помощи контекстного меню и редактируем под свои нужды. Каждая задача настраивается в четырех вкладках. Так, во вкладке «Расписание и информация» указываем название задания, время или событие, при котором оно будет запущено, комбинацию клавиш и опционально активное окно программы, при появлении которого должно быть выполнено задание. Во вкладке «Действия» прописываются собственно макросы. Нажимаем «Новое действие» — появляется окно настройки параметров. В левой части находим предустановки, разбитые на несколько групп, затем уточняем параметры в правой части. Остальные вкладки задания позволяют настроить переменные, установить приоритет, запуск в отдельном процессе, журналирование. Все очень просто и понятно.

Для активации заблокированных функций следует дополнительно установить модуль xStartHooks. В этом случае xStarter поведет себя как типичный трой или зловредный софт — начнет перехватывать системные вызовы, «нажимать» клавиши и отсылать сообщения, что может не понравиться антивирусам и файерам. Но с некоторыми антивирями (например, NOD32) это решается легко, достаточно добавить xStarter в исключения.

Для удобства макросы можно компилировать в exe-файл, сюда же при определенных установках могут автоматически добавляться все необходимые библиотеки. Затем такие файлы распространяем на другие системы и выполняем.

Осталось добавить, что поддерживаются все ОС Windows от NT4 до 2k8/7.

На форуме проекта можно найти примеры некоторых популярных задач, среди которых закачка файлов, отправка SMS и e-mail, бэкап и синхронизация данных. Также на сайте доступна специальная версия Starter Job Scheduler for Firebird/Interbase, она предназначена для выполнения SQL-скриптов, бэкапа и восстановления данных в этих СУБД. Еще одна уникальная возможность — удаленное управление запуском задач, а также просмотр журнала при помощи специального приложения xStarter Web Pilot.

Automate

Наверное, самой известной коммерческой программой для автоматизации задач является AutoMate, разрабатываемой компанией Network Automation, Inc (networkautomation.com). Главная ее особенность — создание задач при помощи удобного GUI, без необходимости в написании кода. Весь процесс упрощен за счет использования мастеров и специального редактора задач Task Builder. Программа содержит большое количество готовых шаблонов действий и реакции на них, что еще более упрощает процесс создания цепочки действий. Актуальная на момент написания статьи версия AutoMate 7 поддерживает более 230 предустановленных действий, позволяющих планировать задачи, работать с файлами и БД, передавать данные по FTP/SFTP, шифровать с помощью PGP, мониторить системы, получать доступ к WMI и многое другое.

AutoMate доступна в четырех редакциях, все они ориентированы на определенное использование: AutoMate Professional и Premium, AutoMateBPAServer 7 Standard и Enterprise. Самая простая — AutoMate Professional — обеспечивает удобный интерфейс для создания задач на локальной системе. Самая продвинутая — Enterprise — предоставляет возможности по простому управлению учетными записями и ролями, работе в AD, предусмотрено централизованное управление несколькими машинами, поддержка SNMP, эмулятор telnet и терминала.
Поддерживаются все ОС Win от XP SP2 до 2k8/7. Для установки понадобится платформа Microsoft .NET Framework версии 3.0.

Собственно управление осуществляется при помощи двух консолей — Task Builder и Task Administrator. В Task Builder создаются задания. Этот процесс довольно прост: в панели слева из 29 доступных групп выбираем нужное действие и переносим мышкой в среднее поле. Появляется мастер, который поможет уточнить настройки. Например, создадим действие, позволяющее получить данные по разделу жесткого диска. Переходим в меню System –> Get Volume Information, появляется одноименный мастер, состоящий из четырех вкладок.

Нам нужно последовательно пройти и выбрать параметры в каждой из них. В General указываем раздел диска и параметры, которые хотим получать: тип, метка, файловая система, место. Как вариант, можно сразу указать выбор всех разделов (All volumes) и затем, нажав значок рядом с полем, задать условие проверки. Программа предоставляет ряд встроенных переменных, функций и триггеров, которые можно использовать в этом поле. Также можно создать свое условие. В других вкладках задается описание задания и действие при ошибках.
После того, как создали задание, оно появляется в списке посередине, где его можно редактировать, перемещать, отключать и так далее. Далее аналогичным образом выбираем и заносим другие Actions. Для отладки в задание можно добавить точки останова (Breakpoint, <F8>).

Для управления всеми задачами, как на локальной, так и удаленной системе, предназначен Task Administrator. Выбрав в нем любую задачу, можем просмотреть ее свойства, активировать или создать новую задачу. В свойствах заданию предписываются триггеры, приоритет, защита, учетная запись, от имени которой оно будет выполнено. Настроек много, они очень разнообразны. Задачи сохраняются в файлах с расширением *.aml.

AutoHotkey

Программа AutoHotkey (autohotkey.com) является форком AutoIt v2. Ее автор, Крис Маллетт, предложил добавить в AutoIt поддержку горячих клавиш, но идея не нашла отклика, и в результате в ноябре 2003 года вышел Initial release. В отличие от родительского продукта, AutoHotkey доступен по лицензии GNU GPL.

Синтаксис языка основан на AutoIt v2, некоторые идеи взяты из v3. С его помощью можно легко автоматизировать повторяющиеся задачи: запуск программы, отправку почты, редактирование реестра. Поддерживается работа с файлами, симуляция нажатий кнопок мыши, есть возможность создания GUI. Программа может отслеживать системные события и выполнять действия при их наступлении.

Но фишкой AutoHotkey является управление горячими клавишами. Например, чтобы запускать калькулятор комбинацией <Win+C>, пишем всего одну строку:

#c::Run calc

Значок решетки «#» соответствует клавише <Win>. Документация весьма подробна (перевод доступен по адресу www.script-coding.info/AutoHotkeyTranslation.html), в ней отражены все особенности языка. Кроме собственно интерпретатора, проект предлагает утилиту для создания GUI — SmartGUI Creator и редактор SciTE4AutoHotkey, имеющий подсветку и автодополнение кода.

Скрипты (расширение *.ahk) можно скомпилировать в exeфайл и выполнять на любом компьютере.

Автоматическая установка Firefox с помощью AutoIt

AutoItSetOption ( "WinTitleMatchMode", 2 )
AutoItSetOption ( "WinDetectHiddenText", 1 )
WinMinimizeAll ( )
Sleep ( 1000 )
Run ( "FirefoxSetup3.6.6.exe" )
WinWait ( "Установка Mozilla Firefox" )
Send("{ENTER}")
WinWait ( "Установка Mozilla Firefox", "Тип установки")
Send("{ENTER}")
WinWait ( "Установка Mozilla Firefox", "Сводка" )
Send("{ENTER}")
WinWait ( "Установка Mozilla Firefox", "Завершение работы
мастера установки" )
Send("{ENTER}")
Exit

AUTOMATION ANYWHERE

Разработка калифорнийской компании Tethys Solutions, LLC (automationanywhere.com) уже заслужила признание админов и отмечена наградами различных медиа-изданий. С помощью Automation Anywhere можно легко автоматизировать любые повторяющиеся операции, как простые, так и сложные, не прибегая к программированию.

Сразу скажу, продукт очень серьезный и имеет огромное количество возможностей. Программа умеет работать с файлами, отправлять почту, запускать задачи по плану или при срабатывании триггера, использовать скрипты VBS и JavaScript и многое другое. Технология, получившая название «SMART Automation Technology», избавляет админа от необходимости быть еще и программистом. Запись можно производить в автоматическом режиме, когда компьютер записывает все действия пользователя. В дальнейшем такое задание сразу или после редактирования можно «прокрутить» на других системах, наблюдая, как мышка сама бегает по экрану и нажимает кнопки. Программа предлагает два рекордера: Object Recorder для настольных приложений и Web Recorder для записи последовательности действий в веб-браузере.

Причем Web Recorder в последней версии программы поддерживает все основные технологии, используемые в веб: Java, JavaScript, AJAX, Flash, фреймы. Процесс весьма прост: запускаем Automation Anywhere, выбираем рекордер, и программа начинает записывать все действия пользователя. Для остановки следует нажать комбинацию <Alt+Ctrl+S> или щелкнуть на значке «Stop» в плавающем окне внизу экрана. По окончании процесса программа предложит сохранить запись в файл (расширение *.atmn). Редактирование, а также ручное создание задания производится при помощи Task Editor.

Разработчики уже заложили в программу несколько шаблонов заданий, которые можно использовать как примеры. Редактирование записанного задания также не требует знания кода. Нажав кнопку Edit, мы увидим всю последовательность произведенных на экране действий (движения мышкой, нажатие клавиш).

В левом окне редактора показываются предопределенные команды, разделенные по категориям, которые можно добавить в задание. Здесь есть все: работа с файлами и каталогами, бэкап, таблицы Excel, подключение к интернету, отправка e-mail, захват изображения рабочего стола, запуск/останов сервисов. Выбираем нужное задание и просто перетаскиваем его в правое окно. Сразу же открывается окно редактирования свойств, в котором заполняем предложенные параметры (для каждого пункта они специфичны). Редактор поддерживает дополнительные скрипты, работу с переменными, отладку и многое другое.

Созданное задание можно экспортировать в исполняемый файл и распространить на другие системы.

Задание может стартовать по времени или при срабатывании триггера, это поведение настраивается в Trigger Manager, здесь можно выбрать: запуск окна с определенным текстом, появление файла в каталоге, загруженность ресурса (CPU, память, свободное место), старт/стоп процесса или сервиса, получение определенного e-mail. Не забыли разработчики и о безопасности — Automation Anywhere позволяет защитить скрипт паролем и зашифровать.

В общем, все, что нужно, в программе есть, не хватает разве что локализации. Поддерживает Automation Anywhere все версии Windows: от XP до 2k8/7.

Заключение

На самом деле программ для автоматизации рутинных задач значительно больше. Платные версии отличаются большим удобством и дружелюбным интерфейсом, возможностью работать в сетевой среде. Хотя, в зависимости от подготовки и желания возиться с настройками, можно обойтись и бесплатными программами вроде xStarter, AutoIt или AutoHotkey.

Стандартный планировщик заданий Windows

В Microsoft наконец поняли необходимость наличия нормального планировщика, и, начиная с Vista, в системе появился улучшенный Task Scheduler (Администрирование .. Планировщик заданий, или taskschd.msc) — существенно переработанный по сравнению с предыдущими версиями. Его интерфейс позволяет подключиться для настройки к другому компьютеру, создать (простой и расширенный ва риант) или импортировать задачу. Так, основными элементами задания стали триггеры (Triggers), действия (Actions), условия (Conditions) и параметры (Settings). Триггер определяет, когда и по наступлению какого события запускать задачу: по времени, при включении компьютера, входе в систему, появлении события в журнале. В последнем случае необходимо указать журнал, где будет отслеживаться событие, источник и код события.

Условия и параметры уточняют суть задания, а действие определяет, что собственно можно сделать (запустить прогу, отправить сообщение). Возможность отложенного запуска задания позволяет оттянуть старт в тех ситуациях, когда его немедленный запуск неприемлем (например, высокая загруженность системы). Условия задают другие варианты выполнения задания, например, во время простоя компьютера.

Содержание
ttfb: 5.7730674743652 ms