|
Автоматизация рутинной деятельности с помощью 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
nnCron - улучшенный планировщик задач Windows
В начало страницы       |       На главную страницу
|
|