[Comm] NUT и Ippon

Andrey Liakhovets liakh на dol.ru
Вт Янв 24 23:04:06 MSK 2012


On Tue, 24 Jan 2012 19:21:22 +0400 Vladimir Karpinsky wrote:
>
>24.01.2012 19:00, Шенцев Алексей Владимирович пишет:
>> On Tuesday 24 January 2012 18:51:38 Vladimir Karpinsky wrote:
>>> 24.01.2012 18:37, Шенцев Алексей Владимирович пишет:
>>>> А за чем выключение делать из внешнего скрипта?
>>>> В upsmon.conf пропишите:
>>>>
>>>> SHUTDOWNCMD    "/sbin/shutdown -h +0"
>>>> NOTIFYFLAG     SHUTDOWN        SYSLOG+EXEC+WALL
>>>
>>> Хочется выключить часть компьютеров, подключённых к одному ИБП, не
>>> дожидаясь разряда аккумуляторов. Поскольку нельзя сделать это, основываясь
>>> на уровне заряда, то выключить через определённое время после пропадания
>>> внешнего питания.
>>>
>>> Подробнее расписано выше по треду.
>>
>> А замнить в
>>
>> SHUTDOWNCMD    "/sbin/shutdown -h +0"
>>
>> </sbin/shutdown -h +0>
>>
>> на нужное вам?
>
>Теоретически это возможно, но в состав nut входит upssched для этих целей.
>Важно то, что от сам должен отработать и отмену выключения, если в
>течение отмеренного времени, питание вдруг восстановится.
>Думаю, что выдумывать всё самому в разы сложнее, чем научиться upssched
>готовить. Собственно, почти всё готово, сейчас надо понять: права на
>выполнение shutdown где-то в конфигах должно быть прописано, или настроить
>через sudо.

Похоже, в вашем случае не удастся выключить slave исключительно через
upsmon. Т.е., на slave'е внешний скрипт должен будет сам выключать
компьютер, а т.к. он запущен от пользователя upsmon, то придётся этот
shutdown выполнять через sudo.

Я такую конфигурацию не использовал (хотя думаю попробовать в ближайшем
будущем), поэтому пока мои соображения чисто теоретические, основаны
только на документации NUT.
 А именно:
upsmon может сам выключить компьютер (путём отправки 1 байта своей части,
выполняемой с правами root, которая и выполнит SHUTDOWNCMD из upsmon.conf), но для этого upsmon должен увидеть, что питающие данный
компьютер UPS'ы в "плохом состоянии".
В случае master'а можно было бы выполнить "upsmon -c fsd", тем самым
сказав, что все локальные для master'а UPS'ы "плохие", и т.д...
В случае slave'а ничего подобного не предусмотрено, т.е. upsmon на slave'е
действительно должен увидеть, что UPS'у на master'е "плохо", и только
тогда upsmon на slave'е начнёт выключать slave.
 В вашем же случае slave должен выключаться тогда, когда UPS на master'е
ещё в рабочем состоянии, т.е. указанный выше вариант не проходит.
 (Есть ещё вариант, когда upsmon на slave'е сначала увидит, что UPS на
master'е OB, а затем увидит, что нет соединения с master'ом, -- тогда
upsmon на slave'е тоже решит, что "всё плохо" и начнёт сам выключать.
В этом случае на slave'е не нужны никакие внешние скрипты и не нужен
upssched. Но для такого варианта я пока не представляю, как в нужный
момент обеспечить на стороне master'а разрыв соединения)

Андрей Ляховец


Подробная информация о списке рассылки community