LINUX.ORG.RU
ФорумAdmin

Помогите разобраться с отключением UPS Powercom через nut

 ,


2

2

Задачи две:

1. Сигнал от беспребойника при определенном уровне заряда батареи

2. Завершение работы компа при достижении определенного уровня заряда батареи.

#/etc/ups/ups.conf
[ups]
        driver = usbhid-ups
        port = auto
        desc = "Powercom wow_1000_u"
default.battery.voltage.high = 13.60
default.battery.voltage.low = 10.60
default.battery.voltage.nominal = 12.00
ignorelb
override.battery.charge.low = 67
override.battery.runtime.low = 10
override.battery.charge.warning = 66
upsc ups@localhost
battery.charge: 63 - текущий заряд батареи в %
battery.charge.low: 67 - критический заряд батареи в %
battery.charge.warning: 66 - опасный заряд батареи в % (д.б больше низкого)
battery.date: 2010/01/01
battery.runtime: 1152
battery.runtime.low: 10 - время в секундах, через которое отключается комп после низкого заряда батареи
battery.type: PbAc
battery.voltage.high: 13.60 - напряжение в батарее, влияющее на расчет уровня заряда батареи
battery.voltage.low: 10.60
battery.voltage.nominal: 12.00
device.mfr: POWERCOM Co.,LTD
device.model:   UPS  WOW-1000U FW3.A4
device.serial: 3A4-0000-0001
device.type: ups
driver.flag.ignorelb: enabled
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.7.2
driver.version.data: PowerCOM HID 0.4
driver.version.internal: 0.38
input.frequency: 0.0
input.voltage: 0.0
input.voltage.nominal: 220
output.frequency: 50.0
output.voltage: 226.0
output.voltage.nominal: 220
ups.beeper.status: enabled
ups.date: 2010/01/01
ups.delay.shutdown: 20
ups.load: 34
ups.mfr: POWERCOM Co.,LTD
ups.model:   UPS  WOW-1000U FW3.A4
ups.productid: 00a4
ups.serial: 3A4-0000-0001
ups.status: OB DISCHRG LB
ups.test.result: Done and passed
ups.timer.shutdown: 0
ups.vendorid: 0d9f
# /etc/ups/upsmon.conf
MONITOR ups@localhost 1 user pass master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -H +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 0

При снижении текущего уровня батареи ниже критического (battery.charge.low = 66) комп не выключается. И не подает сигнал. Ниже уровень батареи не хочу опускать, на нее еще один комп запитан.

Команду /sbin/shutdown -H +0 отдельно проверила, комп после нее отключается.

Я писал еще тогда, что подключить UPS только полдела.

Дело в том, что не выполняется команда shutdown. Да, интерактивно, ручками, она выполняется. А вот неинтерактивно - ни в какую в этом Centos 7. Ты уже 3-ий человек на ЛОРе, у кого данная проблема. Я в том числе. Буду очень рад, если найдётся решение.

roiman ()

И по заряду, наверно, не очень хорошо. Со временем, батарея сдохнет и сервак просто не будет успевать выключится. Лучше по времени - подался сигнал и отключить через N минут, если питание не вернулось.

roiman ()

"ступор"

у меня после этих строк

battery.charge: 63 - текущий заряд батареи в %
battery.charge.low: 67 - критический заряд батареи в %
battery.charge.warning: 66 - опасный заряд батареи в % (д.б больше низкого)

текущий заряд (63%) меньше низкого критического (67%) и опасного (66%). и почему опасный уровень должен быть больше низкого  — ничего не понял :(

про shutdown — а «пользователь» имеет права на её выполнение? Если для теста прописать что-то вроде «echo 'low power'>>~/upc.log» оно выполняется?

anymouze ★★ ()
Ответ на: "ступор" от anymouze

С параметрами батареи экспериментирую, сделала такой расклад:

battery.charge: 66
battery.charge.low: 70
battery.charge.warning: 80

Не пищит даже. Не выключается.

Тестовая команда, вместо shutdown не выполнилась...

Добавила пользователя в группу wheel - тоже команда не выполняется при разряженной батарее...

manik207 ()
Ответ на: комментарий от manik207

для эксперимента установите

battery.charge: 90
battery.charge.low: 88
battery.charge.warning: 86

И пожалуйста ссылку на источник по которому настройку выполняете.

anymouze ★★ ()
Ответ на: для эксперимента установите от anymouze
Ответ на: комментарий от roiman

А не в selinux ли дело? PS: у меня был «сервер» на центоси 7 я не помню что я там делал, но nut с posercom 1000 выключался нормально. центось там я снес, и поставил дебиан.

anonymous ()
Ответ на: комментарий от anonymous

Да, я тоже так думал, но отключение selinux для проверки теории ничего не изменило. И опять же, повторюсь, у меня UPS тоже отключается нормально. У меня комп не отключается, а не UPS.

roiman ()
Ответ на: комментарий от manik207

Давай я помогу чем смогу, может у тебя выключится, т.к. думаю, что дело пока в другом.

Что значит не пищит даже? Может отключен динамик... Можно такую команду отправлять UPS на включение/выключение динамика. Может поэтому он просто отключен.

Какая тестовая команда? Если та, что в посте выше, то где эта домашняя папка, в которой должен создаваться этот тестовый файл? От какого пользователя выполняется контроль UPS? Может она выполнилась, а ты просто не там смотрела...

В CentOS shutdown, если правильно помню, не в sbin лежит. Тоже неплохо было бы проверить, точно ли там бинарник лежит...

И, правда, настоятельно рекомендую уйти от заряда, а перейти на время автономной работы. Там просто счетчик нужно будет создать.

roiman ()
Ответ на: комментарий от roiman

Спасибо за ответ))

Не пищит. Пищалка вроде включена (сужу по параметру ups.beeper.status: enable Если только в биосе где...

Нашла, что есть проблема с отключением звука, и во включенном состоянии эта строка и значит - биппер включён - (нашла тут)

Проверочная команда должна создавать простой файл в домашней директории пользователя, от которого выполняется. Увы, файл не создается, (смотрела и в директории root, и в директории пользователя). Или еще какие-то варианты?

Про заряд поняла, до него позже дойду, когда с отключением компа разберусь.

manik207 ()
Ответ на: Спасибо за ответ)) от manik207

Еще раз, правда, не понимаю. Да, бипер включен по логам. Ты отключаешь питание от UPS, и он при этом не подаёт сигналов? Очень странно. Я бы с этого момента начал. Допускаю, что пищалка просто сгорела. А при отключении от сети начинает гудеть трансформатор в нём? А что ups-monitor в консоль пишет про статус в этот момент? Появляются сообщения: «UPS ups@localhost on battery» и «UPS ups@localhost on line power»?

Проверочная команда должна создавать простой файл в домашней директории пользователя

Да, конечно, это понятно. Но какого именно пользователя? У него есть эта самая домашняя директория? Ты для него создавала возможность логина, чтобы эта директория появилась? Сомневаюсь. Попробуй в другую, явно заданную, общедоступную папку это сделать.

И вообще, у тебя стоит в upsmon.conf

MONITOR ups@localhost 1 user pass master

Это действительно так? В upsd.users записан пользователь user и пароль у него pass?

Еще нужно записать RUN_AS_USER user в upsmon.conf.

roiman ()
Ответ на: Спасибо за ответ)) от manik207

Допиши лучше такие строчки в upsmon.conf

NOTIFYMSG ONLINE     "UPS %s on line power"
NOTIFYMSG ONBATT     "UPS %s on battery"
NOTIFYMSG LOWBATT    "UPS %s battery is low"
NOTIFYMSG FSD        "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK     "Communications with UPS %s established"
NOTIFYMSG COMMBAD    "Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN   "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT   "UPS %s battery needs to be replaced"
NOTIFYMSG NOCOMM     "UPS %s is unavailable"
NOTIFYMSG NOPARENT   "upsmon parent process died - shutdown impossible"
NOTIFYFLAG ONLINE    SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT    SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT   SYSLOG+WALL+EXEC
NOTIFYFLAG FSD       SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK    SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD   SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN  SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT  SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM    SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT  SYSLOG+WALL+EXEC

Консоль оживёт и логи. И будет понятно, что монитор запустился и работает нормально. Думаю, что просто он не запустился, или доступа нет. Не забудь после изменений в настройках перезапустить службу монитора: systemctl restart nut-monitor

roiman ()
Ответ на: комментарий от roiman

Бипер проверить смогу завтра с утра. Может, и правда, сгорел.

При отключении от сети трансформатор ощутимо гудит.

При отключении от сети меняется параметр ups.status: OB DISCHRG LB (при подключенном электричестве параметр имеет вид ups.status: OL CHRG

Про пользователя. Тут всё верно. Пользователь user создан в системе, пароль у него pass, домашняя директория есть, зашла им сейчас в домашнюю директорию, файл создала, проблем не возникло. Он же прописан в upsd.users:

[user]
password = pass
allowfrom = localhost
upsmon master
instcmds = ALL
actions = SET

Добавила в начало файла upsmon.conf RUN_AS_USER user - тестового файла не появилось.

Добавила все параметры в upsmon.conf для записи логов.

Монитор, оказывается, не был запущен. Запустила. При отключении питания отобразились сообщения:

Broadcast message from ups@comp (Mon Oct  1 21:55:17 2018):

Communications with UPS ups@localhost established

Broadcast message from ups@comp (Mon Oct  1 21:55:47 2018):

UPS ups@localhost on battery

Broadcast message from ups@comp (Mon Oct  1 21:55:47 2018):

Auto logout and shutdown proceeding

Тестовый файл в директории /var/tmp (права 777) создан не был. Перепроверила.

manik207 ()
Последнее исправление: manik207 (всего исправлений: 1)

OK. На бипер теперь пофиг. Не хочет пищать - пусть так и будет. Монитор главное подаёт признаки жизни.

А где и в каком параметре записываешь тестовую команду? Проверь её еще вручную, от этого пользователя.

roiman ()
Ответ на: комментарий от roiman

Пользователь создает файлы и в своей домашней директории, и в темповой (/var/tmp).

Команду прописываю в виде параметра в файле upsmon.conf:

SHUTDOWNCMD «echo 'vse good'> /var/tmp/ups.log»

.

manik207 ()
Ответ на: комментарий от roiman

Странно, Иппон подключаешь и в нём всё работает из коробки. Может дистрибутивные проблемы? Ну там системд, или что-нибудь такое?

anonymous ()
Ответ на: комментарий от anc

Да, с кавычками напортачила...

Если исправить на "" - тестовый файл создается.

Но машина всё равно не отключается. Вроде и права есть у пользователя, но ...

А если зайти с другой стороны и решить отключение скриптом башевским с проверкой одного параметра ups.status: OB DISCHRG LB.

С логикой скрипта примерно так (скрипт в крон с интервалом в минуту):

1. Проверяем статус UPS (upsc ups@localhost ups.status), если вывод равен OL CHRG - UPS подключен, вывод 0, если вывод равен OB DISCHRG LB - UPS без питания - вывод 1.

#!/bin/bash
stat=$(upsc ups@localhost ups.status) # 1. Вывести статус подключения UPS к сети, присвоить переменную stat
if [[ $stat = OB DISCHRG LB]] # 2. Если значение переменной равно  OB DISCHRG LB
then 
    echo (i=1) # Вывести единицу
fi

Проверила, не пойму как вывести 1 с присвоением переменной i

2. Ставим счетчик на выведенные единицы, и когда счетчик насчитает 10 единиц, т.е. питание не восстановится за 10 минут, выполнить команду отключения компа:

for ((i=1; i < 10; i++))
do
echo $i
sleep 60
done
shutdown now

Если питание восстановилось за это время и вместо единицы получен ноль, то обнулить счетчик.

Как это скрестить?

manik207 ()
Ответ на: Да, с кавычками напортачила... от manik207

Если исправить на «» - тестовый файл создается.
Но машина всё равно не отключается. Вроде и права есть у пользователя, но ...

Вот теперь посмотрите от какого пользователя создался файл, затем проверьте что у именно этого пользователя есть права, т.е. от этого пользователя запустить команду shutdown.

ЗЫ Со скриптом это просто жуткое костылестроение.

anc ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.