Автор Тема: Особенность настройки NUT для работы с ИБП IPPON  (Прочитано 10482 раз)

Оффлайн grumbler

  • alt linux team
  • ***
  • Сообщений: 126
Делюсь решением.

С несколькими разными ИБП IPPON при подключении по USB периодически возникает проблема - драйвер "теряет" ИБП (используется драйвер blazer_usb). Оказалось, что для восстановления работоспособности достаточно перезапустить "службу" драйвера:
service upsdrv restartВ результате я сделал "костыль": скрипт, который перезапускает сервис, вызывается из upsmon по событию "NOCOMM".

Спойлер
Ключевые места /etc/nut/upsmon.conf:
NOTIFYCMD /etc/nut/notifycmdhander
NOTIFYFLAG NOCOMM     SYSLOG+WALL+EXEC


Настройки для sudo.
Строчка для /etc/sudoers:
upsmon ALL=(root) NOPASSWD: /bin/service upsdrv restart
Добавим пользователя upsmon в группу wheel - иначе он не сможет запустить sudo:
usermod -a -G wheel upsmon

Скрипт /etc/nut/notifycmdhander:
#!/bin/bash

# notifycmdhandler - script for NOTIFYCMD in the upsmon.conf
# It can use the environment variables NOTIFYTYPE and UPSNAME to know what has happened and on which UPS.
# Please insert into /etc/sudoers followed line:
# upsmon ALL=(root) NOPASSWD: /bin/service upsdrv restart
#

NUTDRIVERNAME=blazer_usb
UPSUSBVID=0665
UPSUSBPID=5161

GREP=/bin/grep
SUDO="/usr/bin/sudo -S"
LSUSB=/usr/bin/lsusb
SERVICE=/bin/service
LOGGER=/usr/bin/logger

Debug="daemon.debug"
Info="daemon.info"
Error="daemon.error"


try_restart_blaser_usb() {
# check usb device presented if the blazer_usb driver is used
# if result of grep is zero then device is connected and we may restart of blazer_usb (this is should restore connection the NUT with UPS)
  [[ ${NUTDRIVERNAME} == "blazer_usb" && -n ${UPSUSBVID} && -n ${UPSUSBPID} ]] && ${LSUSB} | ${GREP} -q ${UPSUSBVID}:${UPSUSBPID}
  if [[ $? -eq 0 ]]
  then
    ${SUDO} ${SERVICE} upsdrv restart 2>&1 | logger -p ${Info} -t notifycmdhander
    ${LOGGER} -p ${Info} -t notifycmdhander "result of restart service upsdrv : $?"
  else
    ${LOGGER} -p ${Info} -t notifycmdhander "USB device ${UPSUSBVID}:${UPSUSBPID} not found (NUTDRIVERNAME=${NUTDRIVERNAME})"
  fi
}

${LOGGER} -p ${Debug} -t notifycmdhander "run: UPSNAME=${UPSNAME}, NOTIFYTYPE=${NOTIFYTYPE}, cmdline: $*"

[[ -n "${UPSNAME}" ]] || ( ${LOGGER} -p ${Error} "UPSNAME is not defined!" ; exit 1 )
[[ -n "${NOTIFYTYPE}" ]] || ( ${LOGGER} -p ${Error} "NOTIFYTYPE is nod defined!" ; exit 1 )


if [[ "${NOTIFYTYPE}" == "NOCOMM" ]] ; then
# Fix  event "NOCOMM" (wall message "UPS IPPON@localhost is unavailable")
  try_restart_blaser_usb
fi


Попутно общаюсь с разработчиками NUT, Charles Lepple порекомендовал попробовать драйвер nutdrv_qx (придётся собирать из исходников, в пакете nut-server-2.6.5-alt4.M70P.1 его нет)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
https://forum.altlinux.org/index.php?topic=33989.45
http://ippon.ru/support/documentation/ - родная утилита на десктопном кентавре p7 прекрасно запустилась и увидела все виндовые бесперебойники в сети
в driver.list (каталог - /etc/nut)
cat driver.list | grep -iw ippon
"Ippon" "ups" "2" "Back Power Pro 400/500/600/700/800" "" "blazer_ser"
"Ippon" "ups" "2" "Back Power Pro 400/500/600/700/800" "USB" "blazer_usb (experimental)"
"Ippon" "ups" "2" "Back Comfo Pro 600/800" "" "blazer_ser"
"Ippon" "ups" "2" "Back Comfo Pro 600/800" "USB" "blazer_usb (experimental)"
"Ippon" "ups" "2" "Smart Power Pro 1000/1400/2000" "" "blazer_ser"
"Ippon" "ups" "2" "Smart Power Pro 1000/1400/2000" "USB" "blazer_usb (experimental)"
"Ippon" "ups" "2" "Smart Winner 750/1000/1500/2000/3000" "" "blazer_ser"
"Ippon" "ups" "2" "Smart Winner 750/1000/1500/2000/3000" "USB" "blazer_usb (experimental)"
"Ippon" "ups" "2" "(various)" "" "blazer_ser"
"Ippon" "ups" "2" "(various)" "USB" "blazer_usb"
"Ippon" "ups" "2" "INNOVA RT 1K/1.5K/2K/3K" "" "blazer_usb"
blazer_usb (experimental) !!! - может из-за этого сбоит?