Представим, что нам надо исполнить в определенной последовательности некие действия на разных серверах.
Встречайте, команда WAITFOR
waitfor /?
Программа WaitFor имеет два режима работы.
Синтаксис 1: отправка сигнала
WAITFOR [/S система [/U пользователь [/P [пароль]]]] /SI сигнал
Синтаксис 2: ожидание сигнала
WAITFOR [/T время_ожидания] сигнал
Описание:
Эта служебная программа отправляет или ожидает сигнал в системе. Если не задан
параметр /S, сигнал будет отправлен на все системы в домене
Если задан параметр /S, сигнал будет отправлен только на
определенную систему.
Параметры:
/S <система> Удаленная система для отправки сигнала.
/U [<домен\>]<пользователь> Пользователь, от имени которого
будет выполняться эта команда.
/P [<пароль>] Пароль для контекста заданного пользователя.
/SI Отправка сигнала по сети ожидающим компьютерам
/T <время_ожидания> Количество секунд ожидания сигнала.
Допустимый диапазон: 1 - 99999.
По умолчанию время ожидания не ограничено.
<сигнал> Имя сигнала для ожидания или для отправки.
/? Вывод справки по использованию.
Примечание. Система может ожидать несколько сигналов с уникальным именами.
Имя сигнала не может иметь длину более 225 знаков и
может содержать только знаки, входящие в диапазоны a-z, A-Z, 0-9
и знаки ASCII из диапазона 128-255.
Примеры:
WAITFOR /?
WAITFOR SetupReady
WAITFOR CopyDone /T 100
WAITFOR /SI SetupReady
WAITFOR /S система /U пользователь /P пароль /SI CopyDone
Теперь попробуем выполнить на трех серверах некую последовательность действий. Все сервера находятся в одном сегменте сети.
Последовательность должна быть следующей.
S1 -> S2 -> S1 -> S3 -> S1 -> Все
создаем командные файлы
b1.cmd, b2.cmd, b3.cmd .... соответственно на 1,2 и 3 серверах
= b1.cmd = begin =
Некие действия
WAITFOR /SI s2_1
Отправляем сигнал действовать
и ожидаем исполнения на втором сервере
WAITFOR s2_ret
Выполняем ожидаемое действие
WAITFOR /SI s3_1
Ну и третьему отдаем действовать
и ждем возврата
WAITFOR s3_ret
Ну и всем по сети - свободны
WAITFOR /SI s_end
= b1.cmd = end ===
= b2.cmd = begin =
WAITFOR s2_1
Ждем сигнала s2_1
Выполняем ожидаемое действие
WAITFOR /SI s2_ret
Возвращаем вызвавшему
WAITFOR s_end
Ждем разрешения закончить.
= b2.cmd = end ===
= b3.cmd = begin =
WAITFOR s3_1
Ждем сигнала s3_1
Выполняем ожидаемое действие
WAITFOR /SI s3_ret
Возвращаем вызвавшему
WAITFOR s_end
Ждем разрешения закончить.
= b3.cmd = end ===
Вот так-то :)
Работаем :)