Решение для выключения серваков

Добрый день, проблема состоит в том чтоб выключать удаленно серваки при пропадании напряжения на упсе.
есть 2 упса(Smart) 4 сервака - подключены один блок сервыака к одному упсу другой блок к другому упсу.
упс подключен по ком порту использую apcupsd настроил чтоб при пропадании до уровня доходил и выключал.(это делает исправно), но вот есть загвоздка как сделать чтоб, если на одном упсе пропало напряжение(по какой то причине), а на другом все в порядке, не гасил сервак, а к примеру спрашивал второй упс статус его и только после того что на обоих нет напряжения выключать сервак, можно это организовать? и еще как сделать чтоб свой скрипт выполнялся при наступлении события shutdown для сервака... 2 то они выключат а как быть еще с двумя? может надо куда дописать свои строчки?
написал скрипт подкл по shh и выполнение shutdown + авторизация по ключу. Вот только остало сь решить проблему с выключением... Заранее спасибо
ЗЫ система linux

глянте в /etc/apcups или

глянте в /etc/apcups или что-то в этом роде.
когда я юзал apcupsd, там лежали скрипты которые как раз все и делали.
Управление несколькими компами с одного упса - стандартная фича.

_SerEga_ написал(а): глянте в

_SerEga_ написал(а):
глянте в /etc/apcups или что-то в этом роде.
когда я юзал apcupsd, там лежали скрипты которые как раз все и делали.
Управление несколькими компами с одного упса - стандартная фича.

ну вот есть как раз /etc/apcupsd/apccontrol ну чо то написано про shutdown

#!/bin/sh
#
# Copyright (C) 1999-2002 Riccardo Facchetti <riccardo@master.oasi.gpa.it>
#
#  for apcupsd release 3.14.8 (16 January 2010) - redhat
#
# platforms/apccontrol.  Generated from apccontrol.in by configure.
#
#  Note, this is a generic file that can be used by most
#   systems. If a particular system needs to have something
#   special, start with this file, and put a copy in the
#   platform subdirectory.
#

#
# These variables are needed for set up the autoconf other variables.
#
prefix=/usr
exec_prefix=${prefix}

APCPID=/var/run/apcupsd.pid
APCUPSD=/sbin/apcupsd
SHUTDOWN=/sbin/shutdown
SCRIPTSHELL=/bin/sh
SCRIPTDIR=/etc/apcupsd
WALL=wall

#
# Concatenate all output from this script to the events file
#  Note, the following kills the script in a power fail situation
#   where the disks are mounted read-only.
# exec >>/var/log/apcupsd.events 2>&1

#
# This piece is to substitute the default behaviour with your own script,
# perl, or C program.
# You can customize every single command creating an executable file (may be a
# script or a compiled program) and calling it the same as the $1 parameter
# passed by apcupsd to this script.
#
# After executing your script, apccontrol continues with the default action.
# If you do not want apccontrol to continue, exit your script with exit 
# code 99. E.g. "exit 99".
#
# WARNING: the apccontrol file will be overwritten every time you update your
# apcupsd, doing `make install'. Your own customized scripts will _not_ be
# overwritten. If you wish to make changes to this file (discouraged), you
# should change apccontrol.sh.in and then rerun the configure process.
#
if [ -f ${SCRIPTDIR}/${1} -a -x ${SCRIPTDIR}/${1} ]
then
    ${SCRIPTDIR}/${1} ${2} ${3} ${4}
    # exit code 99 means he does not want us to do default action
    if [ $? = 99 ] ; then
	exit 0
    fi
fi

case "$1" in
    killpower)
	echo "Apccontrol doing: ${APCUPSD} --killpower on UPS ${2}" | ${WALL}
	sleep 10
	${APCUPSD} --killpower
	echo "Apccontrol has done: ${APCUPSD} --killpower on UPS ${2}" | ${WALL}
    ;;
    commfailure)
	echo "Warning communications lost with UPS ${2}" | ${WALL}
    ;;
    commok)
	echo "Communications restored with UPS ${2}" | ${WALL}
    ;;
#
# powerout, onbattery, offbattery, mainsback events occur
#   in that order.
#
    powerout)
    ;;
    onbattery)
	echo "Power failure on UPS ${2}. Running on batteries." | ${WALL}
    ;;
    offbattery)
	echo "Power has returned on UPS ${2}..." | ${WALL}
    ;;
    mainsback)
	if [ -f /etc/apcupsd/powerfail ] ; then
	   printf "Continuing with shutdown."  | ${WALL}
	fi
    ;;
    failing)
	echo "Battery power exhaused on UPS ${2}. Doing shutdown." | ${WALL}
    ;;
    timeout)
	echo "Battery time limit exceeded on UPS ${2}. Doing shutdown." | ${WALL}
    ;;
    loadlimit)
	echo "Remaining battery charge below limit on UPS ${2}. Doing shutdown." | ${WALL}
    ;;
    runlimit)
	echo "Remaining battery runtime below limit on UPS ${2}. Doing shutdown." | ${WALL}
    ;;
    doreboot)
	echo "UPS ${2} initiating Reboot Sequence" | ${WALL}
	${SHUTDOWN} -r now "apcupsd UPS ${2} initiated reboot"
    ;;
    doshutdown)
	echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
	${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"
    ;;
    annoyme)
	echo "Power problems with UPS ${2}. Please logoff." | ${WALL}
    ;;
    emergency)
	echo "Emergency Shutdown. Possible battery failure on UPS ${2}." | ${WALL}
    ;;
    changeme)
	echo "Emergency! Batteries have failed on UPS ${2}. Change them NOW" | ${WALL}
    ;;
    remotedown)
	echo "Remote Shutdown. Beginning Shutdown Sequence." | ${WALL}
    ;;
    startselftest)
    ;;
    endselftest)
    ;;
    battdetach)
    ;;
    battattach)
    ;;
    *)	echo "Usage: ${0##*/} command"
	echo "	     warning: this script is intended to be launched by"
	echo "	     apcupsd and should never be launched by users."
	exit 1
    ;;
esac 

вот помогите пожалуйста разобраться

Обычный sh скрипт, если

Обычный sh скрипт, если знаете bash, то все просто, если писали программы на каком-нибудь языке, то быстро разберетесь. Иначе надо хотя бы минимум про bash скрипты почитать, все равно пригодиться, не сейчас, так потом.
Кратко: тут перечислены возможные события и написана реакция на каждое из них(иногда отсутствующая), вам нужно заменить текущую(ие) на нужные вам. Например вставить проверку на состояние другого UPS.
ps мои знания bash и apcupsd не позволяют написать рабочий код с первой попытки без экспериментов, так, что будут конкретные вопросы - отвечу. сам когда-то допиливал этот скрипт

имхо, проще все это сделать в

имхо, проще все это сделать в nut... ;)

Theli написал(а): имхо, проще

Theli написал(а):
имхо, проще все это сделать в nut... ;)

читал про нут поставил чоб к какому подключен серваку выключался, а второй не могу .. :(
я смотрел пример... все равно не выходит на серваках linux стоит.

Theli написал(а): имхо, проще

Theli написал(а):
имхо, проще все это сделать в nut... ;)

ну расскажи мне как? как установить минимальный порог разрядки? как проверить второй блок питания на сервере?как выключить остальные серверы?(ну по мойму это скриптом)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".