Автоматизация рутинной деятельности с помощью nnCron LITE. Восстановление Интернет соединения при его разрыве

Этот таинственный мистер Форт

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

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

Определения Форта могут иметь любое сочетание символов, позволяя вам фактически строить свой, новый, язык на базе предыдущего языка (определений). Вот из этого слоеного теста и слеплен скриптовый язык-каркас для nnCron, оставляя за вами возможность долепить на его прочном фундаменте свою собственную «идеальную машину для автоматизации чего угодно » (или довольствоваться всем имеющимся). Именно поэтому я так и тянул, почти до конца статьи, со списком общих возможностей программы, потому что они… они бесконечны!

И самый простой вариант для такого расширения в nnCron — плагины . Это обычные текстовые файлы с расширением.spf, выполненные как дополнительные модули nnCron, также написанные на языке Форт, которые расширяют функциональность программы за cчет добавления собственных новых слов (операторов и инструкций). В дистрибутив nnCron включено больше десятка полезных (и не очень) плагинов, которые располагаются в подкаталоге plugins домашней директории nnCron.

В заключение, для всех начинающих метапрограммистов, очарованных магией языка Форт, я любезно приведу готовый ответ на первый ваш ещё невысказанный вопрос: как же вывести список всех Форт-слов, находящихся в словаре (читай — утробе) nnCron? Нет ничего проще: откройте Форт-консоль (для более традиционных программистов поясню, что это своего рода штатная дверь во внутренности программы, с которой вы, таким образом, имеете честь общаться, и это возможно как локально, так и удаленно - по сети) и введите туда команду WORDS . Да, чуть не забыл предупредить: приготовьтесь увидеть список, состоящий примерно из трех тысяч слов.

Для всех желающих научиться расширять nnCron: с одной стороны, предлагаю начать свой экскурс в богатый мир языка Форт с этой информативной , а с другой стороны, доверительно сообщаю, что можно скачать исходники самой программы nnCron (и в довесок традиционная плохая новость — это далеко не самая последняя её версия). Помните, Форт — очень лаконичный язык, требующий глубокого предварительного размышления и трансцендентной медитации над кодом, не загрязненной нашим суетным постиндустриальным бытием.

Для пояснения этой мысли просто процитирую первую строчку из книги «Пионеры программирования » знаменитого , начинающего главу №4 про язык Форт таким вот предложением:

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

Гибрид планировщика, автоматизатора и скриптера…

Долго идя от частного к общему, мы наконец-то вышли к перечислению основных направлений, которые эффективно решает nnCron, и вот на что он способен:

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

Последние напутствия к действию

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

Во-вторых, пожалуй, самый неприятный и печальный момент — разработка программы заброшена с 2009 года. Отчасти запас прочности (в рамках её функционала), данный ей в последней существующей версии 1.93, позволяет прекрасно себя чувствовать и доныне в полностью автономном от разработчиков режиме жизни, но, как и любая заброшенная вещь, программа всё же начинает морально устаревать. И главная текущая проблема в этом плане — плохая совместимость с Windows 7, для которой она никогда не тестировалась и не предназначалась. Впрочем, ряд добровольцев уже собрали свои собственные неофициальные и «подпиленные сборки» под Win7.

Поэтому обладателям последней Windows можно сначала попробовать «специальные» сборки: можно взять такую от или другую альтернативную от (). У этих обеих сборок есть свои минусы и плюсы, поэтому призываю вас протестировать их и выбрать любимчика самостоятельно. Всем же остальным ОС-пользователям рекомендую воспользоваться от nnSoft.

В-третьих, нужно иметь в виду, что nnCron самой судьбой уготовано работать в тесной связке с родственной утилитой от этого же производителя — nnBackup. Говоря кратко, она на редкость удачна и обладает во многом схожей с nnCron системой устройства (я писал про неё ранее ). При этом даже сложно выделить целевое предназначение этих двух утилит: они одинаково удачно приживаются как на персональном компьютере, так и на серверах под управлением серверных версий Windows (доступный режим работы «как сервис» особенно подходит к последнему варианту).

И в последнюю очередь приведу немаловажную деталь: nnCron бесплатен для граждан стран бывшего СССР (при условии некоммерческого и некорпоративного его использования). Подробную информацию о процедуре бесплатной регистрации можно .

Всем привет. Сегодня я расскажу вам про замечательную программу nnCron.

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

Скачиваем и устанавливаем nnCron

В конце статьи вы найдете ссылку «nncron скачать». После завершения загрузки запустите файл «nncron_rus.exe». Установка не представляет собой ничего сложного. nnCron работает на всех виндах, есть даже nncron для windows 7. Кстати, на семерке есть одна хитрость. Чтобы nnCron работал в windows 7 нормально, надо при установке выбрать пункты «установить для текущего пользователя» и «установить для всех пользователей», а галочку «установить, как службу снять». Для того, программа работала на русском языке, после установки нажмите правой кнопкой на значок в трее и выберите Options->Language далее выберите из списка Russian, жмите Ок. nnCron предложит вам сохранить конфигурацию и перезапустить его, соглашайтесь и теперь он на русском.

Регистрация nnCron

Теперь об интересующем многих вопросе регистрации nnCron. Программа платная, но не спешите искать crack для nnCron, есть хорошая новость — для всех жителей бывшего СССР nnCron является бесплатным для некоммерческого использования. Поэтому забудьте о crack’ах, выбирайте в меню программы «Зарегистрировать nnCron». В появившемся окне вводите «xUSSR регистрация» в поле «Регистрационное имя» и текущий день недели русскими буквами, например, «четверг» в поле «Регистрационный код». Жмите Ок. Поздравляю! Вы только что, произвели регистрацию nnCron и теперь можете им пользоваться в свое удовольствие.

NnCron - компактный (размером менее 1Мб) и мощный планировщик заданий для Windows, распространяющийся бесплатно для частного некоммерческого использования. По сравнению с большинством планировщиков, и в том числе встроенным в Windows MSTask.exe, nnCron позволяет не только запускать задачи в заданное время, но и реагировать на определенные события, такие, как модификация файла, создание, изменение или деактивация окна, запуск или завершение процесса, установление или разрыв Интернет-соединения, и т.п.

Основные возможности nnCron:

  • может быть запущен в качестве службы (сервиса) или как обычное приложение
  • понимает cron-формат (Unix) и управляется с помощью текстовых файлов cron.tab, формат которых совместим с форматом кронтаб-файлов Unix-систем
  • умеет отслеживать и перезапускать просроченные задачи
  • умеет задавать и использовать переменные окружения (environment variables)
  • умеет запускать процессы от имени текущего авторизованного пользователя (WinNT/2000/XP)
  • позволяет запускать плагины (скрипты произвольной сложности), написанные на языке программирования Форт
  • гибко настраивается под конкретные нужды пользователя
  • не требователен к ресурсам компьютера.

Установка nnCron выполняется обычным способом. После завершения инсталляции и запуска службы nnCron, в системном трее появится иконка планировщика. Щелчок правой кнопки мышки на иконке позволяет получить доступ к основному меню программы.
Чтобы выполнить регистрацию nnCron, пеpейдите в его домашний каталог (обычно- C:\Program Files\NNCRON\) и запустите пpогpамму tm.exe с параметром xReg.

tm.exe xReg

В появившемся окошке введите xUSSR регистрация в качестве имени и текущий день недели (по-pусски) вместо паpоля.

Основные настройки программы хранятся в файле nncron.ini домашнего каталога программы. Для изменения настроек удобно пользоваться основным меню, вызываемым правой кнопкой мышки. Выбирается пункт "Settings" ("Параметры")

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

Кроме настроек, через главное меню программы можно вызвать справку, дополнительные инструменты, которые облегчают создание заданий, отредактировать или выполнить принудительно конкретную задачу, создать новую задачу или напоминание, посмотреть текущий файл журнала nncron.

Создание напоминаний и задач.

Данные о создаваемых для планировщика задачах и напоминаниях, по умолчанию, сохраняются в файле nncron.tab каталога планировщика (.\Program Files\nnCron). Записи задач могут быть представлены в классическом режиме или расширенном .

Классический режим соответствует формату кронтаб-файлов Unix-систем и представляет собой строку, содержащую время в крон-формате и через пробел - команду. Пустые строки и строки, начинающиеся с символа # , не обрабатываются (кроме конструкции #() .

# Minutes Hours Days Months WeekDays Command
*/15 8-16 * * 1-5 checkmail.exe

Первая строка - комментарий, вторая - состоит из пяти полей, разделенных пробелами:


и имени запускаемой программы - checkmail.exe .

Символ * вместо значения определяет "все". Т.е. * в поле означает, что задание должно выполняться все дни месяца. Может быть задано конкретное значение в виде десятичного числа или диапазона чисел. Так, в рассматриваемой строке в поле указано 8-16 - это означает, что задание будет выполняться с 8 часов до 16. Возможно задание значений, разделенных запятой - 8,9,10,11,12,13,14,15,16. В поле запись выглядит так - */15 . Это означает "шаг" - каждые 15 минут. Запись 1-5 в поле означает "с понедельника по пятницу".
В итоге строка будет означать "Выполнять задание checkmail.exe каждые 15 минут каждого часа каждого числа каждого месяца в рабочие дни недели."

Облегченная версия nnCron под названием nnCron Lite , отличается от профессиональной тем, что в ней нет графического интерфейса пользователя, и планировщик может обрабатывать задачи только в классическом режиме. Сами задачи создаются с помощью ручного добавления записей в файл nncron.tab. Расширенный режим - основной и самый мощный синтаксический режим работы nnCron. В расширенном режиме у пользователя появляется возможность создавать именованные задачи (Tasks), каждая из которых запускается в указанное пользователем время и позволяет тонко настраивать и сами выполняемые действия и условия, при соблюдении которых они выполняются.
Описание каждой задачи начинается с такой синтаксической конструкции:

#(имя_задачи

Встретив эту последовательность в файле nncron.tab, планировщик переключается в расширенный режим обработки записи о задаче до обнаружения последовательности

)#

Означающей конец записи.

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

Записи о заданиях в nncron.tab можно создавать как с использованием графической оболочки nnCron, так и редактированием его содержимого с помощью обычного текстового редактора.

Записи, имеющие классический формат, в списке задач, открываемом с помощью графического интерфейса, не отображаются. Они не являются именованными и создаются, изменяются и удаляются вручную, при редактировании файла nncron.tab

Для добавления задачи или напоминания в графической оболочке используется основное меню, открывающееся по щелчку правой кнопки мышки на иконке nnCron в области уведомлений рабочего стола (системном трее).

На первой вкладке ("Время") необходимо задать имя задачи, время старта или событие, по которому произойдет запуск, и учетную запись, с правами которой задача будет выполнена. Если пользователь не указан, то задача будет выполняться с правами системной локальной учетной записи (System Local Account). Необходимо учитывать, что некоторые запускаемые приложения могут быть успешно выполнены только под конкретной учетной записью и требуют загрузки профиля пользователя (приложения MS Office, например).

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

Вкладка "Дополнительно" вызовет отображение созданной задачи в том виде, в каком она будет записана в файл nncron.tab. Например:

AsLoggedUser - как пользователь, выполнивший вход в систему
Time: 30 9 * * 1-5 * - время в крон-формате
Action: - выбранное действие и его дополнительные опции (ниже)
StartIn: "C:\SCRIPTS\TEST" - рабочий каталог
ShowNormal NormalPriority - приоритет, с которым будет выполняться задача
START-APP: C:\SCRIPTS\TEST\test1.bat - в качестве действия будет использован запуск командного файла test1.bat

Практические примеры задач.

Восстановление Интернет соединения при его разрыве.

Назовем задачу "Reconnect". Используемое для подключения к Интернет соединение, как правило, создается для каждого отдельного пользователя Windows. В примере, задача будет выполняться от имени пользователя, выполнившего вход в систему. Вместо времени выбираем условие По событию и из перечня доступных для обработки планировщиком событий - При Разрыве Интернет соединения

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

После сохранения задания, при разрыве подключения к Интернет, планировщик восстановит его, если это технически возможно.
В качестве Интернет подключения может быть выбрано одно из существующих в системе подключений удаленного доступа (dialup, VPN, PPPoE и т.п.). Созданная таким образом задача, будет добавлена в файл nncron.tab в виде:

#(Reconnect
WatchDisconnect
Action:
RASUser: "stm234567"
RASSecPassword: "Qrt3rkJ="
DIAL: "Stream" 10 15
)#

Эту же задачу можно создать и без использования графической оболочки, просто скопировав вышеуказанный текст в файл nncron.tab. После чего, задача появится в списке заданий планировщика и станет доступной для редактирования в контекстном меню правой кнопки, в пункте "Редактировать". Для ее работоспособности необходимо ввести правильный пароль для восстанавливаемого соединения, поскольку, из соображений безопасности, планировщик хранит его в своем внутреннем формате, а не в открытом текстовом виде. Получить пароль в сохраненном nnCron"ом виде можно также с помощью команды

Nncron.exe -ep ПАРОЛЬ

В ответ на такую команду будет отображено окно с текстом хранимого пароля, соответствующим слову "ПАРОЛЬ"

Использование события "Создание/изменения файла".

Возможность запускать задачи по событию "Создание/изменения файла" - очень полезная возможность планировщика, позволяющая решать такие задачи, как выполнение комплексного задания несколькими компьютерами, при чем, с учетом промежуточных результатов.

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

Для анализа содержимого модифицированного файла можно использовать следующую конструкцию

REM FOR /F "параметры" - использование данных из файла
REM Переменная %%I - слово из файла

FOR /F %%I in (Q:\PUBLIC\DIR\startfile.txt) do (
xcopy /Y /S "X:\SourceDir\%%I\*.*" c:\DestDir\*.*
IF %ERRORLEVEL% NEQ 0 net.exe send ADMCOMP XCOPY Error = %ERRORLEVEL% .
REM
...

В данном примере модифицируется содержимое файла Q:\PUBLIC\DIR\startfile.txt. В него записывается имя подкататалога, находящегося на сетевом ресурсе X:\SourceDir\ . Команда xcopy используется для копирования его содержимого на локальный диск C: в каталог DestDir. Процесс запуска задачи можно инициировать выполнением команды

Echo datadir > Q:\PUBLIC\DIR\startfile.txt

После ее выполнения в файле Q:\PUBLIC\DIR\startfile.txt будет записана текстовая строка с именем подкаталога, откуда должны браться исходные файлы для копирования.