AutoIt скрипты - введение и FAQ. Эникейщик на привязи: Обзор программ для автоматизации рутинных операций Какие технические ограничения AutoIt3

  • 18.02.2022

АЛЕКСЕЙ БАРАБАНОВ

Автоматизация MS Windows, или AutoIt как мечта эникейщика

Часть 1

Если не работает ксерокс, вызывайте сисадмина.

Это ведь электронный прибор, разве нет?

Со дня появления компьютеров человечество разделилось на пользователей и «компьютерщиков». Они стояли по разные стороны от электронной вычислительной машины, иногда путаясь в точной принадлежности к своему классу или группе. Но постепенно всё и все стали на свои места. Число пользователей увеличивалось, а число «компьютерщиков» лишь уточнялось. Пока компьютеров было мало, и они представляли собой большие инженерные сооружения, обслуживаемые целыми бригадами «компьютерщиков», в составе которых находилось изрядно механиков и электриков, то и число пользователей, приходящееся на один компьютер, старались сделать максимально большим. Общее соотношение пользователей к «компьютерщикам» мало кого интересовало, поскольку главным ресурсом были именно компьютеры. Но с появлением персональных компьютеров, когда пропорция их числа к количеству пользователей бесповоротно перешла в разряд целых чисел, иметь бригаду для обслуживания каждого компьютера стало очень накладно. Именно с этого момента, с момента создания персональных компьютеров, разработчики как оборудования, так и программного обеспечения стали задумываться о снижении затрат на обслуживание своих изделий. Именно тогда абстрактные «компьютерщики» стали превращаться в системных администраторов, специализирующихся на обслуживании компьютерных систем. Одновременно с этим стали появляться и специальные программные продукты, предназначенные именно для системных администраторов или ориентированные в первую очередь на решение задач обслуживания.

Например, пользователи IBM 360, работающие в среде DOS, должны были так или иначе знать и уметь применять язык управления заданиями JCL, а если они работали в консольном режиме, то и язык управления работой всей системы. А вот те же пользователи IBM PS/2, работающие в среде OS/2, уже могли ничего не знать про настройки системы и довольствоваться лишь тем, что им предоставляет графический интерфейс.

Таким образом, вопрос отличия пользователей от системных администраторов свелся к отличию применяемых ими интерфейсов. Пользователь компьютера, встроенного в мобильный телефон, управляет устройством с помощью графического интерфейса и кнопок на корпусе аппарата, а техник, обслуживающий этот же телефон, пользуется консольными командами или графическим интерфейсом программы специального компьютера, к которому упомянутый телефон подключается через технологический разъем JTAG. Другими словами, интерфейс должен соответствовать решаемым задачам. Но для персональных компьютеров интерфейс имел поистине судьбоносное значение. Ведь самое главное отличие их от компьютеров, использующихся коллективно, заключался в монопольном предоставлении всех ресурсов одному пользователю. Это не могло не сказаться на способе решения проблемы интерфейса. Многие из первых персональных компьютеров продавались как приставка к телевизору, например Sinclair. То есть без телевизора это был еще не компьютер, а вот после его подключения компьютером уже можно было пользоваться. В этом проявлялась важность интерфейса.

Коммерческий успех ПК в очень большой степени зависел от того, как решался вопрос интерфейса, и насколько легко этим интерфейсом могли пользоваться неподготовленные потребители. Если бы первые ПК имели такой же текстовый интерфейс, как мейн-фреймы (для сведения, JCL многие за сверхзапутанность называли «птичьим языком»), то, скорее всего, лишь появившись, эти устройства канули бы в Лету. Но этого не произошло именно благодаря доступному и привлекательному графическому интерфейсу. Сначала главное было в самом экране, то есть в телевизионной трубке. Вероятно, людей привлекало то, что с помощью ее можно было просматривать не только новости и кинофильмы. Но затем в компании Xerox прошли удачные опыты по обучению разумных прямоходящих млекопитающих навыкам использования манипулятора «мышь» с одной кнопкой. Это было поистине революционным событием. И хотя «мышь» с того времени успела увеличить число кнопок, но предложенный способ взаимодействия с ПК путем нажатия на кнопки мыши, или «кликов», прочно вошел в обиход компьютерных пользователей. И точно так же однозначно заставил принять системных администраторов негативную позицию к этому процессу – «мышиному» кликанью.

Интерфейсы

Если сисадмин по телефону говорит вам,

какие кнопки надо нажимать, почитайте газету.

Hа самом деле я не хочу, чтобы вы что-то делали.

Чем же «мышки» так не устроили сисадминов? Дело было не столько в манипуляторах «мышь», а в особенностях применяемого тогда графического интерфейса. Поскольку главным показателем уровня системного администрирования стало число обслуживаемых одним сотрудником компьютеров, то средства обеспечения автоматизации системных операций, установки ОС, ее настройки и управления, приобретали решающее значение. И вплотную решение этого вопроса соприкасалось с обеспечением всех этих же работ по каналам удаленного доступа. Естественно, для платформ с текстовым интерфейсом и первое, и второе решалось легко. Существовали простые скриптовые языки, которые позволяли очень быстро запрограммировать любую операцию управления ОС, и средства обеспечения удаленного доступа в текстовом режиме обеспечивались на достаточно слабом технологическом уровне коммуникаций. Например, так решались вопросы администрирования в ОС семейства UNIX. Но в операционных системах, ориентированных на работу в графической среде, все было не так просто. Во-первых, графический интерфейс с семантической точки зрения полностью определяется прикладной программой. То есть, реакция на активацию кнопки «ОК» в графическом меню зависит от фазы диалога и от назначения программы, его обслуживающей. Во-вторых, обеспечение удаленной работы в графической среде требовало гораздо большей пропускной полосы от каналов связи, чем работа в текстовом интерфейсе. Все это привело к тому, что автоматизация графических настроек практически не развивалась. Ну разве что самим разработчиком ОС, в данном случае Microsoft, путем увеличения сложности вложенных меню. И для системных администраторов работа в среде Microsoft Windows превращалась в бесконечную тренировку кистевых мышц, поскольку ничем практически их возможности не отличались от тех, что были предоставлены рядовым пользователям, менялись лишь заголовки и содержание выпадающих окон. Это сыграло свою положительную роль – манипулятор типа «мышь» за последнее время из примитивной «каталки» с крыльчатками и обрезиненным шариком превратился в высокотехнологическое устройство на основе оптического (лазерного) сканера и оснащенное радиоканалом для связи с компьютером. Но ясно, что даже если манипулятор «мышь» будет преобразован в имплантант с компьютерным интерфейсом, это все равно не позволит одному системному администратору обслуживать одновременно большее число компьютеров, как этого требует современная IT-индустрия, подчиняющаяся жестким рамкам TCO: http://www.telecominfo.ru/?t=2012 , таблица 2. И рост показателя числа одновременно обслуживаемых пользовательских компьютеров (Full Time Equivalent – FTE) сдерживался неразвитостью средств автоматизации системных работ в ОС, построенных на основе графических интерфейсов.

Нельзя сказать, что все было ограничено лишь технологическими проблемами. Дело в том, что на платформе MS Windows, которая долгое время была безальтернативной для персональных компьютеров, применяются в основном проприетарные программные продукты. А решение проблемы их массовой установки идет в разрез с требованиями соблюсти обязательную процедуру регистрации (легализации, активации) каждой копии программы. Обычно процедура регистрации копии обставлена специальными защитными протокольными и не всегда техническими действиями, например, требуется согласиться с лицензией, ввести серийный номер с бокса или CD-диска, вставить ключевой диск в лоток привода, провести активацию через Интернет и многое иное, что взбредет в голову озабоченного получением прибыли разработчика. Даже сама ОС MS Windows в ее коробочном воплощении не предназначена для создания автоматизированных систем установки на ее основе. В чем смысл автоматического размножения одной копии, если по маркетинговому замыслу все продаваемые копии этой системы требуют оригинальной для каждой из них процедуры регистрации. Были, конечно, оставлены лазейки и прочие оговорки. Ну не могли же «отцы-основатели» этой софтверной «пирамиды» просто низвести весь институт системных администраторов до положения «эникейщиков». Поэтому существовали так называемые «корпоративные» версии, которые допускали серийную установку, как копирование одной и той же установочной процедуры на множество компьютеров. Правда, в отместку там вводились иные ограничения, например, на установку обновлений. Но даже такую суррогатную свободу автоматизации рутинных операций установки собственной продукции могла позволить далеко не каждая фирма-производитель программного обеспечения. Поэтому еще одна проблема автоматизации работ в среде GUI заключена в том, что многие программные продукты не предназначены для автоматической установки и настройки в силу дизайна, так как требовали в процессе установки именно «человеческих» действий.

Анимация вместо автоматизации

Если вы увидели сообщение «Are you sure?»,

нажмите «Yes» как можно быстрее!

Черт побери, если бы вы не были уверены,

вы бы не делали этого, не так ли?

И вот все эти проблемы получили свое решение. Появилось средство автоматизации операций в графической оконной среде, которое имитировало работу человека-оператора, названное AutoIt и предназначенное изначально для автоматизации операций установки программ. Сейчас можно воспользоваться версией 2.64, загрузив ее с http://www.hiddensoft.com/AutoIt , и версией 3.1.0, доступной по адресу: http://www.autoitscript.com/autoit3/index.php .Эти программы распространяются под открытыми лицензиями. Версия 2.64, написанная Джонатаном Беннетом (Jonathan Bennet), в некоммерческих проектах может быть использована без ограничений, а в коммерческих необходимо вместе с продуктом указывать ссылку на сайт разработчика. Версия 3.1.0, авторство которой принадлежит упомянутому Джонатану Беннету вместе с AutoIt Team, уже идет под GNU GPL, что свидетельствует о зрелости подхода и о невозможности в дальнейшем изъять эту программу из свободного оборота, переведя под какую-нибудь закрытую лицензию. На обе версии есть, кроме прилагаемого файла Help на английском языке, еще и русская версия документации в формате chm, подготовленная Валерием Ивановым.

Если рассмотреть эту программу отдельно от контекста предполагаемого применения, то это всего лишь средство перехвата анализа состояния оконного интерфейса и эмуляции нужных сообщений якобы от лица оператора. Практически смотрится как демонстрационная мультипликация. Но с точки зрения языковой машины, например, юниксового bash, интерпретирующей некоторый скрипт, все действия выглядят точно так же мультипликативно. Только это никому не заметно, если происходит не на экране, а в текстовой консоли. И тем более что в текстовых интерпретаторах есть возможность прятать и перенаправлять обрабатываемые потоки символов. Но можно назвать и полную текстовую аналогию из мира *nix обсуждаемой здесь программе. Это известное средство expect. Оно позволяет заменить для некоторой прикладной программы общение с текстовыми терминалами и тем самым автоматизировать работу оператора путем эмуляции процесса его работы. Применяется это обычно для автоматизации работ с интерактивными средами, например с ftp. Примечательно, что и expect, и AutoIt имеют в своем составе средство, облегчающее создание сценариев путем записи перехваченных реальных интерфейсных данных. Конечно, в AutoIt это пока очень незрелое ручное средство, которое в модальном окне показывает характеристики выбранного элемента графического интерфейса.

С точки зрения технологии AutoIt всего лишь использует возможности, заложенные в API графического интерфейса. Того же самого результата можно добиться с помощью Visual Basic или даже C++. Но в том-то и разница, что использование AutoIt позволяет избежать программирования на «тяжелых» языках. Ибо сисадмин не программист, и ему нужно не писать программы, а лишь решать стандартные проблемы автоматизации, возникающие в ходе его работы.

Итак, как же это работает. Такое средство должно иметь возможность ввести в управляемую им среду все необходимые данные, проанализировать ответ и в меру стандартных языковых возможностей организовать интерактивное выполнение описанного процесса. Все! Если интерфейс текстовый, что верно в отношении expect, то такая система должна вводить строковые последовательности, принимать и анализировать ответные строки и в зависимости от результата и в силу возможностей своего синтаксиса организовывать некоторый алгоритмический процесс. Если интерфейс графический, то к перечисленному добавляется GUI-специфика. К вводимым данным добавляются управление поведением окон (обнаружение, активация, минимизация, закрытие и проч.), закладок и других элементов оконного интерфейса, передвижение мыши и нажатия кнопок на ней. Точно так же, к получаемым данным добавляются события по созданию, активации и прочим операциям с окнами. Ну а оставшееся всецело определяется дизайном встроенного языка. В версии 2.* используется язык с синтаксисом подобным ассемблерному с разделителями в виде запятых и примитивными управляющими операторами, основанными на условных переходах. В 3-й версии это уже практически полноценный язык программирования с привычными управляющими структурами, включая функции, и как следствие goto из употребления в этом релизе изъят. И та и другая версии позволяют, как интерпретировать операторы, записанные в отдельный скриптовой файл, так и создавать исполняемую версию на основе runtime-компонентов. Но версия 3.* «тяжелее» в полтора раза. Поэтому исполняемые файлы на основе 2-й версии имеют размер от 40 Кб, а версии 3.* – от 116 Кб. Вероятно, из-за большего числа встроенных функций. Кроме уже перечисленного версия 3.* имеет встроенные тайм-ауты в операторах ожидания, что позволяет решать проблемы «зависаний» неустойчивых приложений, но в практике автоматизации стандартных действий можно с успехом обойтись и без этого. Другими словами, решения, построенные на версии 2.* не утратили актуальности для 90% задач, решаемых с помощью AutoIt, но релиз 3.* позволяет создавать полноценные приложения, если такое нужно. В интернет-ресурсах, посвященных AutoIt есть даже примеры игровых программ.

Установка программного обеспечения

Если вы занимаетесь на вечерних компьютерных курсах,

обязательно проверьте свои знания на своем

и всех соседских компьютерах.

Мы любим работать до 2:30 ночи, исправляя это.

Думаю, теории достаточно. Далее рассмотрим разнообразные примеры реального использования предложенной технологии. Здесь не ставится целью писать большие и изощренные программы. Главное, чтобы это были работоспособные и применимые в практике скрипты и программы. Часть из них будет разобрана в тексте, другая просто указана в ссылках и предназначена для самостоятельного изучения. Многие из них будут использованы в заключительном комплексном примере создания диска для автоматической установки MS Windows. Начиная с самой простой предложенные программы будут усложняться постепенно, что не мешает после прочтения всей статьи вернуться к началу и переработать рассмотренные программы с использованием всего арсенала AutoIt.

В качестве первого практического примера рассмотрим автоматизацию установки самого AutoIt. Поскольку мы располагаем сразу двумя работоспособными релизами, 2-м и 3-м, то решим задачу автоматической установки AutoIt версии 3 с помощью скрипта для 2-й. Для этого установим AutoIt версии 2 в систему и создадим с помощью текстового редактора Notepad файл setup_autoit3.aut. Расширение «aut» является стандартным для скриптов AutoIt2. Запишем следующую последовательность операторов:

SetTitleMatchMode, 2

DetectHiddenText, on

// уберем все окна с экрана

WinMinimizeAll

// подождем секунду

Sleep, 1000

Run, autoit-v3-setup.exe

// завершение

Exit

Это очень короткая программка станет основой разрабатываемого скрипта. Все операторы снабжены комментариями и совершенно очевидны по содержанию. Но прежде чем запускать ее на выполнение загрузим «AutoIt Reveal Mode» – специальное средство для просмотра информации, скрытой в структурах связанных, с окнами в MS Windows. Затем запустим скрипт и дождемся завершения. После появления сообщения о завершении закроем его нажатием на кнопку «ОК» и снова развернем все окна. Должно получиться так, как показано на рисунке.

Здесь обратите внимание, что в окне AutiIt v2.64 приводится весь перечень текстовых строк с активного окна, начиная с его заголовка. Именно на эти строки и будет далее «ловиться» установщик в нашем скрипте, и поскольку кнопка Next уже выделена как активная, то сразу, как только скрипт дождется активности окна с названием «AutoIt v3.1.0. Setup», можно отправлять этому окну Enter, что приведет к нажатию активной кнопки, то есть к переходу на следующий экран установщика. Вот текст следующей, более сложной фазы разработки:

// установим режим детектирования скрытого текста в окнах

SetTitleMatchMode, 2

DetectHiddenText, on

// уберем все окна с экрана

WinMinimizeAll

// подождем секунду

Sleep, 1000

// запустим установку из той же директории

Run, autoit-v3-setup.exe

Send, {ENTER}

// выведем окошко с сообщением

MsgBox, 0, AutoIt, Setup done

// завершение

Exit

Для проверки отменим установку и запустим скрипт по новой.

После остановки снова завершим наш скрипт, развернем все окна и проанализируем результат, изображенный на рисунке.

Здесь аналогично первому запуску проследим за участками, отмеченными красным. Задача заключается в том, что надо «отловить» новое окно и активировать нужное действие. Но окно имеет такое же название, что и предыдущее! Тогда смотрим в окошке перехватчика, какие еще строковые значения нам доступны. Находим строку «License Agreement». Эта строка как нельзя лучше отражает специфическое значение полученного окна. И поскольку здесь снова нужное действие сразу стоит по умолчанию, то после обнаружения этого окна нужно снова отправить в него Enter. Меняем текст следующим образом:

// установим режим детектирования скрытого текста в окнах

SetTitleMatchMode, 2

DetectHiddenText, on

// уберем все окна с экрана

WinMinimizeAll

// подождем секунду

Sleep, 1000

// запустим установку из той же директории

Run, autoit-v3-setup.exe

// дождемся нужного окна и нажмем Next

WinWaitActive, AutoIt v3.1.0 Setup

Send, {ENTER}

Send, {ENTER}

// выведем окошко с сообщением

MsgBox, 0, AutoIt, Setup done

// завершение

Exit

Обратите внимание, как изменился синтаксис оператора WinWaitActive, поскольку теперь нужно определить окно не по названию, а по тексту внутри, то детектируемая строка записывается в третьем поле. Снова прекратим установку и проделаем те же операции, что и в предыдущем запуске. После остановки должен получиться результат, сходный с изображенным на рисунке.

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

// установим режим детектирования скрытого текста в окнах

SetTitleMatchMode, 2

DetectHiddenText, on

// уберем все окна с экрана

WinMinimizeAll

// подождем секунду

Sleep, 1000

// запустим установку из той же директории

Run, autoit-v3-setup.exe

// дождемся нужного окна и нажмем Next

WinWaitActive, AutoIt v3.1.0 Setup

Send, {ENTER}

// аналогично дождемся license agreement

WinWaitActive, License Agreement

Send, {ENTER}

WinWaitActive, Choose Install Location

Send, {ENTER}

// завершение установки

WinWaitActive, Click Finish to close

Send, {ENTER}

// выведем окошко с сообщением

MsgBox, 0, AutoIt, Setup done

// завершение

Exit

Эта программа устанавливает AutoIt v3 в автоматическом режиме. Её можно преобразовать в исполняемый, а не интерпретируемый код. Но предлагаю прогнать ее полностью и далее перейти к работе в AutoIt v3, который как раз и будет установлен к этому моменту. Прежде всего, воспользуемся утилитой перевода тестов из 2-й версии в 3-ю «v2 to v3 Converter». Такой подход позволяет сразу получить синтаксически верную программу. Вот результат:

// V2.64 to V3.0.100 (Version 1.0.6)

// Converted with AutoItV2toV3

// (C) Copyright 2004 J-Paul Mesnage.

// установим режим детектирования скрытого текста в окнах

AutoItSetOption ("WinTitleMatchMode", 2)

AutoItSetOption ("WinDetectHiddenText", 1)

// уберем все окна с экрана

WinMinimizeAll ()

// подождем секунду

Sleep (1000)

// запустим установку из той же директории

Run ("autoit-v3-setup.exe")

// дождемся нужного окна и нажмем Next

WinWaitActive ("AutoIt v3.1.0 Setup")

Send ("{ENTER}")

// аналогично дождемся license agreement

WinWaitActive ("", "License Agreement")

Send ("{ENTER}")

// окно с выбором места установки

WinWaitActive ("", "Choose Install Location")

Send ("{ENTER}")

// завершение установки

WinWaitActive ("", "Click Finish to close")

Send ("{ENTER}")

// выведем окошко с сообщением

$__msgbox = MsgBox (0, "AutoIt", "Setup done")

// завершение

Exit

Как видно по тексту, никаких существенных изменений новый синтаксис не несет. Скрипт после конвертации был помещен в файл setup_autoit3.au3, расширение у которого имеет стандартное для версии 3 значение. Но программа делает все то же самое. Если преобразовать ее в исполняемый код с помощью имеющегося в версии 3 компилятора, то после удаления AutiIt v3 из системы его можно снова установить с помощью новой программы. Это и будет проверкой работоспособности.

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

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 - это одна из его сильных сторон. Он одновременно мощный и простой. Например, чтобы запустить программу, достаточно написать:

Все, больше никаких действий. С помощью 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, можно расширить перечень горячих клавиш или переопределить их значения глобально или локально. Например, легко можно сделать так, чтобы задача выполнялась при нажатии комбинации клавиш , но только в том случае, если запущен 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, ).

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

AutoHotkey

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

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

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

Значок решетки «#» соответствует клавише . Документация весьма подробна (перевод доступен по адресу 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 () уже заслужила признание админов и отмечена наградами различных медиа-изданий. С помощью Automation Anywhere можно легко автоматизировать любые повторяющиеся операции, как простые, так и сложные, не прибегая к программированию.

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

Причем Web Recorder в последней версии программы поддерживает все основные технологии, используемые в веб: Java, JavaScript, AJAX, Flash, фреймы. Процесс весьма прост: запускаем Automation Anywhere, выбираем рекордер, и программа начинает записывать все действия пользователя. Для остановки следует нажать комбинацию или щелкнуть на значке «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). Триггер определяет, когда и по наступлению какого события запускать задачу: по времени, при включении компьютера, входе в систему, появлении события в журнале. В последнем случае необходимо указать журнал, где будет отслеживаться событие, источник и код события.

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



1. Для чего предназначен AutoIt3?

AutoIt предназначен для общих задач автоматизации. Для достижения этой цели был создан стандартизированный бейсикоподобный язык программирования. Это означает, что если вы уже знакомы с какими-либо скриптовыми языками программирования, то вы, скорее всего, с легкостью освоите AutoIt v3.

2. Сложно ли освоить AutoIt?

Освоить AutoIt3 очень легко, посмотрите пример вызова команд

9. Почему, когда я пытаюсь вывести значение переменной, используя конструкцию "Значение переменной: $variable", я не получаю ожидаемого результата?

Если у вас есть переменная с именем $msg и вы хотите вывести его в MsgBox , то следующая конструкция НЕ сработает:

12. Как завершить выполнение скрипта при нажатии горячей клавиши?

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

Ниже приведен код, который завершает скрипт при нажатии комбинации клавиш CTRL+ALT+x

13. Как использовать свой собственный значок для скомпилированного скрипта?

Вам надо запустить программу компиляции скриптов (а не просто выбрать “Компиляция/Compile” при клике правой кнопкой мыши на файл скрипта). Эта страница справки описывает работу компилятора более подробно. Также используйте AutoIt3Wrapper, чтобы указывать иконку в самом скрипте с помощью директив.

14. Как предотвратить запуск второй копии моего скрипта?

Используйте функцию _Singleton () . Посмотрите раздел справки по пользовательским функциям (UDF) для более подробной информации по работе этой функции и способов ее применения.

15. Какие технические ограничения AutoIt3?

Ниже вы найдите текущие технические ограничения налагаемые на AutoIt. Имейте в виду, что некоторые ограничения сугубо теоретические и вы скорее достигнете пределы производительности или операционной памяти, прежде чем сработает ограничение. Также смотрите раздел " "

Значение Описание
2147483647 Максимальная длина строковой переменной. Учитывая ограничение 2 Гб на один процесс и символы находящиеся в памяти в Юникоде, это заметно снижает указанную величину
не ограничено Максимальное кол-во GUI-окон
5100 Максимальный уровень вложенности рекурсивного вызова функций
не ограничено Максимальное кол-во пользовательских функций
не ограничено Максимальное кол-во используемых в скрипте переменных

Диапазон чисел с плавающей точкой с точностью до 15 знаков после запятой

Диапазон целых чисел: 64-битный целый знаковый тип

0x7FFFFFFF

Диапазон шестнадцатеричных чисел: 32-битный целый знаковый тип
64 Максимальное кол-во измерений в массиве
16 млн Общее кол-во элементов в массиве

16. Почему в примерах файла справки отсутствует какое-то изображение?

Это должна была быть кнопка “Открыть/Open”, которая открывает примеры из справки в окне редактора. Такого рода ошибка возникает, когда библиотека hhctrl.ocx неправильно зарегистрирована в системе или этот файл испорчен.
Попробуйте зарегистрировать выполнив команду "regsvr32 hhctrl.ocx" (диалог "Выполнить" по Win+R) или проверьте исправность файла.


» AutoIt

Overview

AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying “runtimes” required!

AutoIt was initially designed for PC “roll out” situations to reliably automate and configure thousands of PCs. Over time it has become a powerful language that supports complex expressions, user functions, loops and everything else that veteran scripters would expect.

  • Easy to learn BASIC-like syntax
  • Simulate keystrokes and mouse movements
  • Manipulate windows and processes
  • Interact with all standard windows controls
  • Scripts can be compiled into standalone executables
  • Create Graphical User Interfaces (GUIs)
  • COM support
  • Regular expressions
  • Directly call external DLL and Windows API functions
  • Scriptable RunAs functions
  • Detailed helpfile and large community-based support forums
  • Compatible with Windows XP / 2003 / Vista / 2008 / Windows 7 / 2008 R2 / Windows 8 / 2012 R2 / Windows 10
  • Unicode and x64 support
  • Digitally signed for peace of mind
  • Works with Windows Vista’s User Account Control (UAC)

AutoIt has been designed to be as small as possible and stand-alone with no external .dll files or registry entries required making it safe to use on Servers. Scripts can be compiled into stand-alone executables with Aut2Exe .

Also supplied is a combined COM and DLL version of AutoIt called AutoItX that allows you to add the unique features of AutoIt to your own favourite scripting or programming languages!

Best of all, AutoIt continues to be FREE – but if you want to support the time, money and effort spent on the project and web hosting then you may donate .

Download

Features

Here are some of the unique features of AutoIt.

Basic-like Syntax and Rich Function Set

AutoIt has a BASIC-like syntax which means that most people who have ever written a script or used a high-level language should be able to pick it up easily.

Although it started life as a simple automation tool, AutoIt now has functions and features that allow it to be used as a general purpose scripting language (with awesome automation as well of course!). Language features include:

  • The usual high-level elements for functions, loops and expression parsing
  • A staggering amount of string handling functions and a Perl compatible regular expression engine (using the PCRE library).
  • COM support
  • Call Win32 and third-party DLL APIs

Built-in Editor with Syntax Highlighting

AutoIt comes with a customised “lite” version of SciTe that makes editing scripts easy. Users can also that includes additional tools to make things even easier.

Standalone and Small

AutoIt is a very small and standalone application with no reliance on massive runtimes like .NET or VB. All you need to run AutoIt scripts are the main AutoIt executable (AutoIt3.exe) and the script. Scripts can also be encoded into standalone executables with the built-in script compiler Aut2Exe .

International and 64-bit Support

AutoIt is fully Unicode aware and also includes x64 versions of all the main components! How many other free scripting languages can you say that about?

Key and Mouse Simulation

Much time has been spent optimizing the keystroke and mouse simulation functions to be as accurate as possible on all versions of Windows. All the mouse and keyboard routines are highly configurable both in terms of simulation “speed” and functionality.

Window and Control Management

You can expect to move, hide, show, resize, activate, close and pretty much do what you want with windows. Windows can be referenced by title, text on the window, size, position, class and even internal Win32 API handles.

Directly get information on and interact with edit boxes, check boxes, list boxes, combos, buttons, status bars without the risk of keystrokes getting lost. Even work with controls in windows that aren’t active!

Graphical User Interfaces (GUIs)

AutoIt v3 will also allow you to create some complex GUIs – just like those below!

And much, much more.

You’ll probably want to go to the downloads page right now…