Если у Вас каждый сервер работает от выделенного ИБП (Источника Бесперебойного Питания) и на каждом сервере стоит ПО от этого ИБП, которое аккуратно выключает сервер, в случае потери питания и приближении заряда батарей ИБП к критической точке, и все это действительно работает, могу Вас поздравить, дальше будет скучно.
Если у Вас один могучий ИБП, который держит на своих могучих батареях целую группу серверов - то милости просим, эта тема для вас, если вы еще не настроили все как надо. Ну, или если вы планируете обзавестись такой системой, то, надеюсь, пример ниже Вам поможет.
В первую очередь, естественно, нужно после сборки все обработать напильником установить ПО от ИБП, и допустим, если Вы счастливый обладатель APC, то в Ваших руках софт - PowerChute Business Edition, который замечательно настраивается и умеет отключать сервер, а при грамотной настройке и группу серверов, но на сколько я помню, в базовом варианте, т.е. в комплекте с их ИБП идет лицензия на отключение всего пяти серверов. А если их больше, то тогда есть возможность запустить скрипт, программу или батч файл. Вот о нем дальше и пойдет речь.
И так, по умолчанию дается default.cmd следующего содержания:
rem -----------------------------------------------------------------------------remrem Maximize for best viewingrem This command file provides examples of proper command file syntaxremrem Command Files run by PowerChute Business Edition must be placed in this directory.remrem Use the full path name of executable programs and external command files.remrem The @START command must be used to run executable programs (see example below).rem For the @START command, path names that include spaces must be enclosed in quotes;rem arguments for the executable must be outside the quotes. A double quote mustrem precede the quoted path name. For example, to execute a command file inrem c:\Program Files\APC\PowerChute Business Edition\agent\cmdfiles called myShut.exe,rem the following line should be entered in the command file:remrem @START "" "c:\Program Files\APC\PowerChute Business Edition\agent\cmdfiles\myShut.exe"remrem -----------------------------------------------------------------------------Можно сделать следующее (добавить в конец этого файла):
@START "" c:\CMD\psshutdown.exe -k -c -t 5 -u admin@domain.ru -p PaSsWoRd \\@c:\CMD\servlist.txtПри этом используется одна из утилит набора PsTools, который можно свободно скачать с сайта technet.microsoft.com, в комплекте идет очень подробный манул, по работе с утилитой.
В файле servlist.txt может быть сколько угодно серверов, нужно помнить только одно, при таком воздействии отключение серверов будет происходить последовательно, и стоит задуматься о параллельном отключении серверов. Что же можно для этого сделать?
Можно сделать множественный вызов как в самом default.cmd файле, так и через другие батч файлы. Точнее, команда @START по своей сути вызывает еще один процесс, за пределами среды батч файла в котором она была запущена. Т.е. можно выполнить следующее:
@START "" c:\CMD\psshutdown.exe -k -c -t 5 -u admin@domain.ru -p PaSsWoRd \\@c:\CMD\servlist1.txt@START "" c:\CMD\psshutdown.exe -k -c -t 5 -u admin@domain.ru -p PaSsWoRd \\@c:\CMD\servlist2.txtВ этом случае одновременно будет происходить процесс завершения работы по двум спискам.
В качестве примера, вот коды трех файлов, можете поиграться на досуге, параллельные процессы:
main.cmd
echo offcls@START cmd /C slave1.cmd@START cmd /C slave2.cmdpauseslave1.cmd
echo offclsecho SLAVE 1pauseslave2.cmd
echo offclsecho SLAVE 2pauseНадеюсь, Вам пригодится.
P.S.
У всех производителей ИБП свой софт, и в каждом случае серверное и клиентское ПО настраивается по своему.