Архивы: по дате | по разделам | по авторам

Автоматизация по-малому

АрхивПолезняшки (архив)
автор : Валерий Кондаков   08.10.2002

Или зачем нужны планировщики?..

«Машина должна работать, человек — думать»

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

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

Казалось бы, ситуацию могут исправить специальные программы-автоматизаторы, «планировщики на стероидах». Они не только запускают процесс в указанное время, но и, в зависимости от «продвинутости» программы, учитывают множество дополнительных факторов, умеют отслеживать заголовки открытых окон, файл-флаги, эмулировать операции с мышью и многое другое. Достоинства программ-автоматизаторов очевидны, однако не менее очевидны и их недостатки:

  • они довольно сложны в освоении и имеют запутанный интерфейс. Многие программы-автоматизаторы работают только со своими, специально созданными диалектами распространенных скриптовых языков.
  • в подавляющем большинстве, программы-автоматизаторы стоят недешево. Например, «честная» установка AutoMate 5 на одну машину обойдется юзеру аж в 349 долларов!
  • это очень громоздкие программы: дистрибутив той же AutoMate 5 «весит» около 15 мегабайт.

Впрочем, как раз AutoMate (рис. 1) тестировал Сергей Голубицкий, и, как мне показалось, остался доволен программой («Голубятня» «Неживые секретарши»). На вкус и цвет?..


Рисунок 1

Существует, правда, и промежуточный вариант: Windows Scripting Host или программа-скриптер (например, AutoIt), с помощью которых пользователь сам составляет «автоматизирующие» скрипты либо на уже известном ему языке программирования, либо на том, который предоставляет программа-скриптер. У этого варианта тоже есть существенные недостатки — во-первых, для запуска скрипта вам понадобится внешний планировщик, а во-вторых, пользовательских знаний для написания собственных скриптов может элементарно не хватить, поскольку здесь уже необходима квалификация программиста.

Но означает ли все вышеизложенное, что мечта «прозрачно» автоматизировать рутинную компьютерную работу так и останется нереализованной? Нет. Еще в 1996 году питерский программист Дмитрий Гориславский предоставил на суд пользователей программу Control Agent — своеобразный гибрид планировщика и скриптера. Программка получилась маленькая (всего 180 килобайт) и на удивление мощная. При этом акцент делался на простоту и стройность программы: настроить «Контрольного Агента» легко мог любой пользователь. Установки программы и задач хранились в простом текстовом файле, что позволяло без проблем переносить Control Agent с машины на машину. За короткий срок программа получила небывалую популярность среди нуждавшихся в «малой автоматизации» пользователей. К сожалению, ее разработка неожиданно прервалась в августе 1997-го года, и мне так и не удалось выяснить, почему Дмитрий потерял интерес к своему детищу. Одна из наиболее часто звучащих версий произошедшего гласит, что в результате какого-то неудачного стечения обстоятельств автором были утеряны исходные тексты программы, что сделало невозможным ее дальнейшее развитие.

Шло время, Control Agent медленно, но верно устаревал, а замена ему так и не появлялась. Так продолжалось до середины 2000-го года, когда о себе во весь голос заявил новый игрок на поле «малой автоматизации» — nnCron: амбициозный проект программиста из Пскова Николая Немцева.

Именно эту программу я считаю лидером среди остальных планировщиков-скриптеров-менеджеров автоматизации, и вот почему: на текущий момент nnCron гораздо мощнее и мобильнее, нежели Control Agent, обладает всеми достоинствами своего предшественника и свободен от большинства его недостатков: nnCron отлично адаптирован под «новые» версии Windows (WinME/Win2000/WinXP), позволяет создавать, редактировать и управлять задачами с помощью удобного графического интерфейса, активно развивается и, наконец, бесплатен для жителей "ex-USSR". Несмотря на крошечный (по нынешним меркам) размер дистрибутива — чуть больше 300 килобайт, nnCron (рис. 2) обладает поистине титаническими возможностями и может на равных конкурировать даже с такими «монстрами», как AutoMate. Помимо традиционной для планировщика способности запускать в указанное время программы, «напоминалки» и открывать документы, nnCron умеет:

  • запускать произвольные программы как сервисы;
  • запускать задачи «от имени» указанных юзеров;
  • выключать или «усыплять» компьютер в заданное время;
  • «будить» компьютер, чтобы запустить задачу;
  • отображать/скрывать/закрывать/убивать/сворачивать/разворачивать и прятать в системный трей заданные окна;
  • выводить на экран и в лог-файл любые сообщения, в том числе и запросы на выполнение указанных действий;
  • работать с буфером обмена, файлами и реестром;
  • эмулировать клавиатурный ввод и операции с мышкой;
  • звонить и класть трубку;
  • «пищать» через системный динамик с заданной продолжительностью и частотой;
  • воспроизводить аудио-файлы;
  • синхронизировать системное время
  • присваивать процессам указанный приоритет;
  • прерывать работу любых запущенных процессов;
  • автоматически перезапускаться после фатальных ошибок;
  • отслеживать файлы, флаги, окна, процессы, движения мыши, время простоя компьютера, клавиатурные шорткаты, выход в онлайн/оффлайн, появление диска в дисководе, наличие хоста в сети (пинг), количество свободного места на диске...


Рисунок 2

Согласитесь, список впечатляет! Но и это еще не все: nnCron позволяет использовать в задачах скриптовые языки VBScript и JScript, а также регулярные выражения. Он может выполнять произвольные программы на языке программирования Форт (SP-Forth), и расширяется за счет плагинов. Кроме того, не зря бывалым юниксоидом уже почудилось что-то знакомое в его названии: действительно, nnCron понимает cron-формат (Unix) и управляется с помощью текстовых кронтаб-файлов. Задачи можно описывать в двух синтаксических режимах: «классическом» (UNIX-cовместимом) и «расширенном», более мощном. Помимо этого, nnCron полноценно работает с ключами командной строки Ну, а для тех, кто не любит или не умеет работать в текстовом режиме, есть графическая оболочка, с помощью которой можно настраивать и запускать задачи, включать и выключать напоминалки и менять настройки программы (рис. 3). nnCron может быть запущен как обычное приложение или в качестве службы (сервиса) Windows. Поскольку программа предназначена для выполнения важных, а иногда даже и критических для системы задач, она отличается повышенной «живучестью» за счет так называемого «непотопляемого режима».


Рисунок 3

В nnCron встроено несколько дополнительных инструментов, которые еще больше расширяют его возможности. WinSpy (рис. 4) — утилита, которая позволяет узнать текущие координаты мыши, выяснить класс объекта, над которым находится мышь, получить информацию о координатах основного и дочернего окна. Console (рис. 5) — средство интерактивного общения с nnCron для знатоков Форта и незаменимый помощник для всех, кто только начинает изучение этого языка.


Рисунок 4


Рисунок 5

Я готов снять шляпу перед внушительным списком возможностей программы, но лично мне в nnCron больше всего нравится даже не его очевидная «могучесть», а та удивительная степень свободы, которая предоставляется пользователю: c nnCron'ом можно работать так, как удобно тебе, а не автору программы, поскольку nnCron легко поддается настройке и готов «приспособиться» к нуждам пользователя. К примеру, время в задачах можно указывать в cron-формате, а можно —  в классическом: «минуты», «часы», «дни». Любую задачу можно запустить вручную через меню или прямо из командной строки или временно запретить ее выполнение. Можно спрятать иконку nnCron от посторонних глаз, можно показывать ее только для пользователей с правами администратора, можно запустить nnCron от имени одного пользователя, а графический интерфейс nnCron — от имени другого, можно... много чего можно.

А еще nnCron пригодится в качестве программы-напоминалки, Startup-менеджера, менеджера клавиатурных шорткатов и даже менеджера переменных среды.

Как же все это изобилие применить «на практике»? Вот лишь несколько несложных примеров (сейчас я сознательно избегаю традиционного применения планировщика — запуска программ в указанное время):

  • эмуляция действия пользователя даже в его отсутствие: nnCron будет двигать мышью, нажимать на кнопки, перемещать окна, «печатать» на клавиатуре;
  • временная блокировка ввода с мыши или клавиатуры;
  • автоматизация передачи, получения и даже сортировки файлов по ftp или локальной сети;
  • отслеживание изменений указанных файлов и автоматическая обработка оных;
  • создание «умных» клавиатурных сочетаний, выполняющих различные действия в зависимости от смены условий (например, в отсутствие интернет-соединения просто запустить почтовую программу, а при подключении к интернету — проверка новой почты).

Ну и, разумеется, с помощью nnCron можно автоматизировать практически любые действия пользователя, которые поддаются логическому упорядочиванию: в случае «а» делаем то-то, в случае «б» — то-то...

А что же насчет недостатков? Несомненно, они есть — но в меньшем количестве, нежели достоинства. Естественно, nnCron не мог не унаследовать главную проблему, свойственную этому классу программ: некоторую сложность в освоении. Впрочем, Николай Немцев сделал все возможное для того, чтобы рутинные процессы можно было автоматизировать через GUI, даже не заглядывая в справочную систему. К тому же, существует специальная эхо-конференция Usenet fido7.ru.nncron, в которой можно получить ответы на возникающие в процессе работы с nnCron вопросы. Ну, а в качестве последнего аргумента напомню, что чтение документации — вообще очень полезное занятие!

Еще один потенциальный недостаток nnCron — прямое следствие его достоинств: возможности «скриптования» программы практически не ограничены и это означает, что некорректно написанная задача может привести к краху программы или даже к нестабильной работе системы. Разумеется, это касается только задач, составленных «вручную»: встроенный парсер nnCron не всегда может «отловить» ошибки пользователей, хотя cистема предупреждения работает довольно надежно и информирует о большинстве потенциальных проблем.

Что же в итоге? Вывод прост: nnCron возьмет на себя вашу головную боль о регулярном выполнении самых разнообразных рутинных операций. Мало того, он с готовностью будет принимать решения о необходимости того или иного действия в зависимости от изменившихся условий. Так что попробуйте «малую автоматизацию» на практике, начав пусть даже и с мелочей: например, автоматизируйте ежедневное получение электронной почты, обработку обновившихся файлов в указанном каталоге или регулярное «техобслуживание» компьютера (проверка диска, дефрагментация, удаление временных файлов). Я не сомневаюсь: результат понравится и вам, и вашему компьютеру!

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.