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


Шаг первый - устанавливаем и настраиваем nncron на компьютере PC2.
Шаг второй - создаем задания для nncron.


    Для запуска выбранных программ по расписанию очень удобно использовать планировщик заданий nnCron (Автор - Николай Немцев). С его помощью можно в указанное время и с заданной периодичностью запускать любые процессы. nnCron LITE распространяется бесплатно, сопровождается очень толковой документацией на русском языке и работает со всеми ОС Windows. nnCron (не LITE) для некоммерческого использования также бесплатен для граждан бывшего СССР, но требует регистрации. Он вобрал в себя все лучшее из известного в мире UNIX планировщика cron. Скачать последнюю версию nnCron LITE (230кб) и nnCron можно отсюда: www.nncron.ru
    Основные возможности nnCron:
-- может быть запущен в качестве службы (сервиса) или как обычное приложение
-- понимает cron-формат (Unix) и управляется с помощью текстовых файлов cron.tab, формат которых совместим с форматом кронтаб-файлов Unix-систем
-- умеет отслеживать и перезапускать просроченные задачи
-- умеет задавать и использовать переменные окружения (environment variables)
-- умеет запускать процессы от имени текущего авторизованного пользователя (WinNT/2000/XP)
-- позволяет запускать плагины (скрипты произвольной сложности), написанные на языке программирования Форт
-- гибко настраивается под конкретные нужды пользователя
-- не требователен к ресурсам компьютера.

    nnCron LITE значительно проще в использовании, чем nnCron, но и скромнее по возможностям. Для примера рассмотрим вариант использования nnCron LITE для решения следующей задачи:

    В локальной сети необходимо в 17.00 ежедневно, кроме выходных, передавать архив каталога C:\BASE с компьютера PC1 в каталог D:\ARHIV на компьютер PC3, и в 22.00 ежедневно выключать компьютер PC3 и включать его же в 8.00. а в 8.30 выполнить на нем программу program.exe.

    Напрашивается простое решение с использованием nncron на каждой машине, однако мы усложним ситуацию тем, что будем считать компьютер PC2 компьютером администратора с установленным nncron, а PC1 и PC3 - обычными компьютерами пользователей. Т.е. управлять всеми процессами будет PC2. Это накладывает некоторые ограничения на его конфигурацию - ОС на нем должна быть Win2k/XP с правами администратора по отношению к ресурсам остальных компьютеров.
    Для решения данной задачи нам потребуется не только nncron, но и некоторые из утилит пакета Pstools.


Шаг первый - устанавливаем и настраиваем nncron на компьютере PC2.


    Для начала скачиваем nnCron LITE На сегодняшний день на сайте www.nncron.ru выложена версия nncron Lite в виде исполняемого модуля nncronlt116.exe. Запускаем его , выбираем язык (лучше, конечно, выбрать русский), вариант установки (для одного пользователя или для всех на данном компьютере) и каталог, где будет размещаться программа. После успешного завершения инсталляции вы увидит итоговое окно, сообщающее, что инсталляция завершена и сервис nnCron LITE запущен. В меню "Программы" появился раздел nnCron LITE, позволяющий запустить или остановить сервис.
    В целом все готово к работе, однако желательно бы установить nncron в качестве сервиса системы, чтобы он запускался автоматически независимости от входа пользователя в систему. Для этого переходим в папку C:|\Program Files\cron и запускаем install_svc.bat. В этой же папке находится текстовый файл cron.tab, содержимое которого является основным инструментом управления запуском заданий. После инсталляции он содержит следующее:

#CRONTAB FILE
# Classic crontab format:
# Minutes Hours Days Months WeekDays Command
#*/15 8-16 * * 1-5 checkmail.exe

    Строки, начинающиеся с символа # являются комментариями и планировщиком не обрабатываются (как и пустые строки). Т.е. данный файл не содержит ничего, кроме комментариев, дающих краткое описание классического crontab - формата (есть еще и расширенный формат) и пример для запуска checkmail.exe.
Последняя строка (cron-формат) состоит из пяти полей, разделенных пробелами:
<Минуты> <Часы> <Дни месяца> <Месяцы> <Дни недели>
и имени запускаемой программы - checkmail.exe.

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

    Для проверки создадим простое задание :

"Запускать каждые 2 минуты интерпретатор команд Windows".

Строка cron.tab должна быть следующей:

<Минуты> <Часы> <Дни месяца> <Месяцы> <Дни недели> <Задание>

*/2                      *                 *                 *               *                       cmd.exe

Добавляем в cron.tab строку :

*/2 * * * * cmd.exe

и убеждаемся, что задание выполняется. Если это не так, смотрим содержимое папки /log, где nncron ведет журнал своих действий. Причиной обычно является неверное имя задачи или отсутствие ее в путях поиска, заданных переменной окружения PATH. Если вы используете указанную выше строку crontab - формата в Win9x/Me, то получите ошибку, поскольку интерпретатор команд в этих ОС - command.com, а не cmd.exe и строка должна была бы выглядеть так:

*/2 * * * * command.com


Шаг второй - создаем задания для nncron.


    Убедившись, что nncron работает, удаляем нашу тестовую строку и приступаем к формированию строк для выполнения нашего задания.
Для начала нам необходимо в 17.00 ежедневно, кроме выходных, передавать архив каталога C:\BASE с компьютера PC1 в каталог D:\ARHIV на компьютер PC3. C формированием условий запуска задания проблем не возникает, но какое задание запускать?. Решений может быть несколько, но рассмотрим самое простое - nncron будет запускать не исполняемый модуль, а bat-файл, в котором будет выполняться подключение сетевых дисков компьютеров PC1 и PC3 и архивирование с помощью архиватора, запускаемого из командной строки. Пусть этот файл называется arh.bat и находится в каталоге C:\SCRIPTS нашего компьютера PC2.

<Минуты> <Часы> <Дни месяца> <Месяцы> <Дни недели> <Задание>

      0                 17                 *                 *                 1-5                 c:\scripts\arh.bat

Содержимое arh.bat может быть следующим (строки, начинающиеся с "rem " в командных файлах являются комментариями):

rem Подключаем диск C компьютера PC1 как сетевой диск M:
net use M: \\PC1\C
rem Подключаем диск D компьютера PC3 как сетевой диск N:
net use N: \\PC3\D
rem Архивируем C:\BASE компьютера PC1 в D:\ARHIV компьютера PC3 с помощью архиватора arj
arj a N:\ARHIV\PC3base.arj M:\BASE\*.*
rem удаляем сетевые подключения
net use N: /delete
net use M: /d

    Запускаем arh.bat и убеждаемся, что он работает. После чего добавляем в cron.tab строку :

0 17 * * 1-5 C:\scripts\arh.bat

    Первая часть задания выполнена. Вторая (в 22.00 ежедневно выключать компьютер PC3 и включать его же в 8.00. а в 8.30 выполнить на нем программу program.exe ) потребует наличия утилит командной строки, позволяющих выполнять удаленное администрирование. Для чего воспользуемся утилитами из пакета PsTools от Sysinternals и broadc.exe. На всякий случай я разместил здесь ссылки на те утилиты, которыми пользуюсь сам:

Psshutdown - утилита выключения/ перезагрузки компьютера (скачать, 126кб)
Позволяет выключать или перезагружать как локальный, так и удаленный компьютер. Формат командной строки:

psshutdown -s|-r|-h|-d|-k|-a|-l|-o [-f] [-t nn] [-m "Сообщение "] [-u Username [-p Password]] [\\computer]
    Примеры использования:
psshutdown -k \\PC3 - выключить компьютер PC3. Вместо имени компьютера можно указать его IP-адрес. Если ничего не указано, то имеется в виду локальный компьютер.
psshutdown -r \\192.168.0.1 - перезагрузить удаленный компьютер с IP-адресом 192.168.0.1.
Psexec - утилита запуска заданий на удаленном компьютере из пакета PSTools Microsoft (Sysinternals). (скачать PSTools.zip )
Формат командной строки:

psexec \\computer][-u user [-p psswd]][-s|-e][-i][-c [-f|-v]][-d][-][-a n,n,...>] cmd [arguments]
    Примеры использования:
psexec \\PC3 program.exe - выполнить на удаленном компьютере program.exe. Выполняемая программа должна быть в путях поиска.
psexec \\PC3 -c C:\SCRIPTS\program.exe Выполняемая программа копируется на удаленный компьютер из C:\SCRIPTS и выполняется.
Broadc - утилита для включения компьютера по локальной сети. (скачать, 32кб)
Формат командной строки:

broadc.exe MAC-адрес сетевой карты 255.255.255.255 67
    Примеры использования:
bbroadc.exe 0002b3d8b4e6 255.255.255.255 67 - включить компьютер, MAC - адрес сетевой карты которого равен 0002b3d8b4e6 . Материнская плата и сетевая карта должны обеспечивать удаленное включение и в BIOS должна быть включена поддержка расширенного управления питанием.

Создаем расписание заданий:

<Минуты> <Часы> <Дни месяца> <Месяцы> <Дни недели> <Задание>
      0                 22                 *                 *                 *                 psshutdown
      0                 8                   *                 *                 *                 broadc
      30               8                   *                 *                 *                 psexec

    Добавляем в cron.tab следующие строки:

0 22 * * * C:\SCRIPTS\psshutdown.exe -k \\PC3
0 8 * * * C:\SCRIPTS\broadc.exe 0002b3d8b4e6 255.255.255.255 67
30 8 * * * C:\SCRIPTS\psexec.exe \\PC3 programm.exe


Дополнительно к данному материалу:

Примеры и подробное описание утилит пакета PStools

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой "Поделиться"






В начало страницы     |     На главную страницу


Top.Mail.Ru