APCUPSD подключение нескольких UPS

Прошло много времени и я решил выложить некоторые свои наработки к себе в блог, поделиться так сказать с народом. Поскольку часто нахожу решения, используя тот же google, в благодарность так сказать, выложу то, через что я прошёл, чтобы «следующим поколениям» было легче преодолеть этот путь.

Для начала для каждой APC создаём в /etc/apcupsd несколько поддиректорий (у меня например это «420» и «750», копируем в каждую все конфиги из каталога /etc/apcupsd . Далее в каждом из apcupsd.conf нужно поправить параметры подключения к УПСу и порт, на котором он будет висеть, чтобы в дальнейшем можно было прикрутить мониторилку на cgi скриптах (в ubuntu пакет для этого есть в репозиториях и называется apcupsd-cgi, если мне не изменяет память). Ну и самое важное — это создать два скрипта запуска при загрузке системы, для каждой УПСины соответственно свой. Приведу ниже код одного из них, который успешно работает у меня вот уже год.


#!/bin/sh

### BEGIN INIT INFO
# Provides:		apcupsd
# Required-Start:	$remote_fs $syslog
# Required-Stop:	$remote_fs $syslog
# Should-Start:		$local_fs
# Should-Stop:		$local_fs
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Starts apcupsd daemon
# Description:		apcupsd provides UPS power management for APC products.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/apcupsd
DAEMONPID=/var/run/apcupsd420.pid
CONFIG=/etc/default/apcupsd
NAME=apcupsd420
DESC="UPS 420 management"

test -x $DAEMON || exit 0
test -e $CONFIG || exit 0

set -e

. $CONFIG

if [ "x$ISCONFIGURED" != "xyes" ] ;
then
	echo "Please check your configuration ISCONFIGURED in /etc/default/apcupsd"
	exit 0
fi


case "$1" in
	start)
	sleep 5
		echo -n "Starting $NAME: "

		rm -f /etc/apcupsd/420/powerfail
#		if [ "`pidof apcupsd420`" = "" ]
#		then
		start-stop-daemon --start --pidfile $DAEMONPID --quiet --exec /sbin/apcupsd -- -f /etc/apcupsd/420/apcupsd.conf --pid-file $DAEMONPID
			echo "$DESC Successfully started."
#
#		else
#			echo ""
#			echo "WARNING! $DESC already started! Stop daemon, then start it!"

			
#			exit 0
#		fi
		;;
	stop)
		echo -n "Stopping $NAME: "
			start-stop-daemon --stop --oknodo --pidfile $DAEMONPID || echo "Not Running."
		rm -f /var/run/apcupsd420.pid
		echo "$DESC Successfully stopped."
		;;

	restart|force-reload)
		echo -n "Restarting $NAME: "
 			start-stop-daemon --stop --oknodo --pidfile $DAEMONPID
		rm -f /var/run/apcupsd420.pid
		echo "$DESC Successfully stopped."
  		sleep 3
			start-stop-daemon --start --pidfile $DAEMONPID --quiet --exec /sbin/apcupsd -- -f /etc/apcupsd/420/apcupsd.conf --pid-file $DAEMONPID
		echo "$DESC Successfully started."
		;;

	status)
		#/sbin/apcaccess status
		$APCACCESS status 127.0.0.1:3551
		;;

	*)
		N=/etc/init.d/$NAME
		echo "Usage: $N {start|stop|restart|force-reload}" >&2
		exit 1
		;;
esac

exit 0

В этом коде почти все переменные, в которых встречается «420» необходимо заменить на свои. Ну и далее знающие люди поймут, что с этим скриптом делать, конкретно, как пихнуть его в автозагрузку, чтобы всё это дело стартовало при загрузке системы. В противном случае пишите в КОММЕНТАРИИ, попытаюсь в рамках данной статьи разжевать это. 🙂

upd 06.04.15 — исправил скрипт, внешне он был совсем нерабочий — с html тегами и обрезанными строками. Никто в комментариях, к сожалению, об этом не сообщил.

Добавить комментарий