Автоматизация по-малому
АрхивКомпьютеры обожают повторяющиеся действия и прекрасно знают, как заставить своего хозяина не тратить время на рутинную работу - регулярные бэкапы, очистку временных каталогов, бесконечные выходы в онлайн, обслуживание пользователей локальной сети и многое, многое другое.
Компьютеры обожают повторяющиеся действия и прекрасно знают, как заставить своего хозяина не тратить время на рутинную работу - регулярные бэкапы, очистку временных каталогов, бесконечные выходы в онлайн, обслуживание пользователей локальной сети и многое, многое другое.
Большинство этих операций можно и нужно автоматизировать, но многие ли уже сделали это или хотя бы представляют, как подступиться к сему непростому процессу? Практика показывает, что лишь малая часть пользователей пользуется услугами планировщика - программы, которая при определенных условиях запускает тот или иной процесс, предпочитая самим выступать в роли своеобразных «планировщиков». Почему же - неужели обычная человеческая лень? Не думаю. Скорее всего, в их распоряжении просто не оказалось программы с подходящими возможностями. К сожалению, «классические» планировщики не умеют делать практически ничего, кроме запуска заданного процесса в указанное время. Большинству пользователей этого мало - хотя хороший планировщик и способен учитывать некие нехитрые комбинации условий запуска, но его не удастся запрограммировать на принятие решения в сложной или критической ситуации. В отличие от пользователей «Макинтоша», которым доступна вся мощь AppleScript, позволяющего записать и формализовать любые действия в операционной системе и приложениях, пользователи Windows вынуждены обходиться скудными возможностями встроенного в систему планировщика. А попробуйте, например, объяснить ему, что нельзя запускать факсовую программу, если в этот момент установлено Интернет-соединение и модем все равно занят… И что прикажете делать, если, допустим, сразу после запуска программы ей надо интерактивно передать данные?
Казалось бы, ситуацию могут исправить специальные программы-автоматизаторы, «планировщики на стероидах». Они не только запускают процесс в указанное время, но и учитывают множество дополнительных факторов: отслеживают заголовки открытых окон и файл-флаги, эмулируют операции с мышью и многое другое. Достоинства программ-автоматизаторов очевидны, однако не менее очевидны и их недостатки.
-
Они довольно сложны в освоении и имеют запутанный интерфейс. Многие программы-автоматизаторы работают только со своими, специально созданными диалектами распространенных скриптовых языков.
-
В подавляющем большинстве программы-автоматизаторы стоят недешево. Например, установка легальной AutoMate 5 на одну машину обойдется в 349 долларов!
-
Это очень громоздкие программы: дистрибутив той же AutoMate 5 «весит» около 15 мегабайт.
Впрочем, как раз AutoMate (рис. 1) тестировал Сергей Голубицкий и, как мне показалось, остался доволен («Голубятня», «КТ» #400). На вкус и цвет?..
Существует, правда, и промежуточный вариант: Windows Scripting Host, или программы-скриптеры (например, AutoIt), с помощью которых пользователь сам составляет «автоматизирующие» скрипты либо на том языке программирования, коим владеет, либо на том, что предоставляет программа-скриптер. У этого варианта тоже есть существенные недостатки: во-первых, для запуска скрипта нужен внешний планировщик, а во-вторых, знаний для написания собственных скриптов может элементарно не хватить.
Но означает ли все вышеизложенное, что мечта «прозрачно» автоматизировать рутинную компьютерную работу так и останется нереализованной? Нет. Еще в 1996 году питерский программист Дмитрий Гориславский представил на суд пользователей программу Control Agent - своеобразный гибрид планировщика и скриптера. Программка получилась маленькая (всего 180 килобайт) и на удивление мощная. При этом акцент делался на простоту: настроить «Контрольного Агента» легко мог любой пользователь. Установки программы и задач хранились в текстовом файле, что позволяло без проблем переносить Control Agent с машины на машину. За короткий срок программа получила небывалую популярность среди нуждавшихся в «малой автоматизации». К сожалению, ее последняя версия датируется августом 1997 года, и мне так и не удалось выяснить, почему Дмитрий потерял интерес к своему детищу. Говорят, автором были утеряны исходные тексты, что сделало невозможным дальнейшее развитие программы.
Шло время, Control Agent медленно, но верно устаревал, а замена ему так и не появлялась. Так продолжалось до середины 2000 года, когда о себе во весь голос заявил новый игрок на поле «малой автоматизации» - nnCron: амбициозный проект программиста из Пскова Николая Немцева.
Именно эту программу я считаю лидером среди остальных планировщиков-скриптеров-менеджеров автоматизации, и вот почему: nnCron гораздо мощнее и мобильнее, нежели Control Agent, обладает всеми достоинствами своего предшественника и свободен от большинства его недостатков; nnCron отлично адаптирован под «новые» версии Windows (WinME/Win2000/W inXP), позволяет создавать, редактировать и управлять задачами с помощью удобного графического интерфейса, активно развивается и, наконец, бесплатен для жителей «ex-USSR». Несмотря на крошечный (по нынешним меркам) размер дистрибутива - чуть больше 300 килобайт, - nnCron (рис. 2) обладает поистине титаническими возможностями и может на равных конкурировать даже с такими «монстрами», как AutoMate. Помимо традиционной для планировщика способности запускать в указанное время программы, «напоминалки» и открывать документы, nnCron умеет:
-
запускать произвольные программы как сервисы;
-
запускать задачи от имени указанных юзеров;
-
выключать или «усыплять» компьютер в заданное время;
-
«будить» компьютер, чтобы запустить задачу;
-
отображать/скрывать/закрывать/удалять/ сворачивать/разворачивать и прятать в системный трей заданные окна;
-
выводить на экран и в лог-файл любые сообщения, в том числе и запросы на выполнение указанных действий;
-
работать с буфером обмена, файлами и реестром;
-
эмулировать клавиатурный ввод и операции с мышкой;
-
звонить и класть трубку;
-
«пищать» через системный динамик с заданной продолжительностью и частотой;
-
воспроизводить аудиофайлы;
-
синхронизировать системное время;
-
присваивать процессам указанный приоритет;
-
прерывать работу любых запущенных процессов;
-
автоматически перезапускаться после фатальных ошибок;
-
отслеживать файлы, флаги, окна, процессы, движения мыши, время простоя компьютера, горячие клавиши, выход в онлайн/офлайн, появление диска в дисководе, наличие хоста в сети (пинг), количество свободного места на диске…
Согласитесь, список впечатляет! Но и это еще не все: nnCron позволяет использовать в задачах скриптовые языки VBScript и JScript, а также регулярные выражения. Он может выполнять произвольные программы на языке программирования Форт (SP-Forth) и расширяется за счет плагинов. Кроме того, не зря бывалым юниксоидом уже почудилось что-то знакомое в его названии: действительно, nnCron понимает cron-формат (Unix) и управляется с помощью текстовых кронтаб-файлов. Задачи можно описывать в двух синтаксических режимах: «классическом» (UNIX-cовместимом) и «расширенном», более мощном. Помимо этого, nnCron полноценно работает с ключами командной строки. А для тех, кто не любит или не умеет работать в текстовом режиме, есть графическая оболочка, с помощью которой можно настраивать и запускать задачи, включать и выключать напоминалки и менять настройки программы (рис. 3). nnCron может быть запущен как обычное приложение или в качестве службы (сервиса) Windows. Поскольку программа предназначена для выполнения важных, а иногда и критических для системы задач, она отличается повышенной «живучестью» за счет так называемого «непотопляемого режима».
В nnCron встроено несколько дополнительных инструментов, которые еще больше расширяют его возможности. Утилита WinSpy (рис. 4), позволяющая узнать текущие координаты мыши, выяснить класс объекта, над которым находится курсор, получить информацию о координатах основного и дочернего окна. Console (рис. 5) - средство интерактивного общения с nnCron для знатоков Форта и незаменимый помощник для всех, кто только начинает изучение этого языка.
Я готов снять шляпу перед внушительным списком возможностей программы, но лично мне в nnCron больше всего нравится даже не его очевидная «могучесть», а та удивительная степень свободы, которая предоставляется пользователю: c nnCron’ом можно работать так, как удобно тебе, а не автору программы, поскольку nnCron легко поддается настройке и готов «приспособиться» к нуждам пользователя. К примеру, время в задачах можно указывать в cron-формате, а можно - в классическом: «минуты», «часы», «дни». Любую задачу можно запустить вручную через меню или прямо из командной строки или временно запретить ее выполнение. Можно спрятать иконку nnCron от посторонних глаз, можно показывать ее только для пользователей с правами администратора, можно запустить nnCron от имени одного пользователя, а графический интерфейс - от имени другого, можно… много чего можно.
А еще nnCron пригодится в качестве «напоминалки», Startup-менеджера, менеджера горячих клавиш и даже менеджера переменных среды.
Как же все это изобилие применить «на практике»? Вот лишь несколько несложных примеров (сейчас я сознательно избегаю традиционного применения планировщика - запуска программ в указанное время):
-
эмуляция действия пользователя даже в его отсутствие: nnCron будет двигать мышью, нажимать на кнопки, перемещать окна, «печатать» на клавиатуре;
-
временная блокировка ввода с мыши или клавиатуры;
-
автоматизация передачи, получения и даже сортировки файлов по ftp или локальной сети;
-
отслеживание изменений указанных файлов и автоматическая обработка оных;
-
создание «умных» клавиатурных сочетаний, выполняющих различные действия в зависимости от смены условий (например, в отсутствие Интернет-соединения - просто запустить почтовую программу, а при подключении к Интернету - проверить почту).
И разумеется, с помощью nnCron можно автоматизировать практически любые действия пользователя, которые поддаются логическому упорядочиванию: в случае «а» делаем то-то, в случае «б» - то-то…
Конечно, у nnCron есть и недостатки. Прежде всего, он не мог не унаследовать главный минус подобных программ: некоторую сложность в освоении.
Еще один потенциальный недостаток nnCron - прямое следствие его достоинств: возможности «скриптования» программы практически безграничны, и это означает, что некорректно написанная задача может привести к краху программы или даже к нестабильной работе системы. Разумеется, это касается только задач, составленных «вручную»: встроенный парсер nnCron не всегда может «отловить» ошибки пользователей, хотя система предупреждения работает надежно и информирует о большинстве потенциальных проблем.
Попробуйте «малую автоматизацию» на практике. Начните с мелочей: например, автоматизируйте ежедневное получение электронной почты, обработку обновившихся файлов в указанном каталоге или регулярное «техобслуживание» компьютера (проверка диска, дефрагментация, удаление временных файлов). Не сомневаюсь: результат понравится и вам, и вашему компьютеру!
Программы, упомянутые в статье:
-
AutoMate (shareware, www.unisyn.com/automate).
-
AutoIt (free, www.hiddensoft.com/AutoIt).
-
Control Agent (shareware, www.dg.spb.ru).
-
nnCron (free for ex-USSR users, nemtsev.eserv.ru).