使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

2026-01-29 16:39:36 2点赞 4收藏 0评论

前言:

楼主目前共两台NAS和一台型号为APC-BK650M2_CH的UPS,NAS系统一台为飞牛系统,另外一台为黑群晖系统DSM7.2系统;

UPS只有一个通讯口,但我需要保证两台NAS可以同时在停电时收到关机命令,故因此了解到了NUT-Server信息;

但目前存在主要矛盾是黑群晖系统自带ups-usb配置和nut-server,但飞牛系统仅支持配置ups-usb,不支持配置nut-server供局域网其他用户使用,也没有界面支持nut client使用,这个需求目前飞牛论坛里不少人也都有提,但该需求依然没有排期,故经过大量的网络内容筛查,目前已成功完成飞牛NUT-Server部署及黑群晖NUT信息联动

环境描述:

NAS_A系统及版本:飞牛OS1.1.11

NAS_B:黑群晖DSM7.2.2

UPS型号:APC-BK650M2_CH

部署架构:飞牛系统做nut-server,黑群晖做nut-client

NUT文件内容科普

nut服务配置文件主要包含

  • ups.conf 设置ups通信相关内容,UPS名称及信息,尽量保证与sudo ups-scanner -U​的值一致

  • nut.conf nut的配置,主要是模式(客户端还是服务器),决定使用哪些文件

  • upsd.conf 设置ups客户访问的相关信息

  • upsmon.conf

  • upssched.conf 这两个文件可以不用管,可以直接通过界面进行信息配置及保存

其中部分文件都可以直接通过飞牛系统ui界面进行选择而自动配置,因为飞牛系统不支持server,故部分文件需要手动进行编写。

步骤说明:

1、界面操作

访问飞牛网页服务,点击“系统设置”-》“硬件和电源”,随后点击“启动UPS支持”,UPS类型设置“USB UPS”,插入UPS通讯线至飞牛NAS设备中,随后即可在飞牛UPS界面选择已识别到的UPS,按需配置“关机等待方式”及“关机等待时间”,随后点击“确定”即可完成飞牛UPS-USB配置。

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

2、飞牛系统下命令行操作

/etc/nut目录

当前ups服务只能被飞牛本机设备访问,我们需要让局域网下的黑群晖设备也可以访问到该服务,故需要通过SSH连接到飞牛系统,随后输入如下命令进入nut目录

cd /etc/nut

通过输入命令ls -l​,我们可以看到当前文件夹下的nut配置文件

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

​通过sudo ups-scanner -U​命令我们可以看到当前系统中已被识别到的UPS的信息

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

/etc/nut/ups.conf文件

通过sudo cat ups.conf​命令我们可以看到飞牛系统给UPS分配的名称及UPS信息(名称是重点,其余与上面的基本一致,名称这里我不建议改,因为我没改,不清楚改了以后会不会不识别)

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

/etc/nut/upsd.conf文件

通过sudo vim upsd.conf​命令我们修改当前NUT-Server可以被访问的主机ip范围,找到如下文本类似位置进行修改,按i​键插入内容,修改完毕后按键盘ESC​,随后输入:wq​保存文件

按如下配置可以直接开放局域网全部主机访问

修改内容的方法 # ======================================================================= # LISTEN [] # LISTEN 127.0.0.1 3493 LISTEN 0.0.0.0 3493 # LISTEN ::1 3493 # LISTEN myhostname 83493 # LISTEN myhostname.mydomain # 这里可以配置指定ip有权限连接到这台ups-server上 ACL client_88 你的黑群晖ip/32 ACL localhost 127.0.0.1/32 ACL accept_ips localhost client_88

/etc/nut/upsd.users文件

随后为UPS-Server新增从机用户,sudo vim upsd.users​,按i​键插入内容,修改完毕后按键盘ESC​,随后输入:wq​保存文件

# 这个用户是飞牛系统默认给的,不建议进行修改 [monuser] password = trim-secret upsmon master # 这里新增一个用户从机用户,[]内的信息为用户名,password = 后输入自定义的密码,upsmon信息照抄即可 [monuser1] password = secret upsmon secondary

随后输入sudo systemctl daemon-reload​ 刷新配置 ,再输入sudo systemctl restart nut-server.service​进行nut服务重启

至此,飞牛系统的NUT-Server 的SSH配置告一段落

3、黑群晖 UPS配置

SSH远程连接至群晖终端,随后输入sudo vim /usr/syno/bin/synoupscommon​,往下翻找到193行(如下所示),按i​键插入内容,修改完毕后按键盘ESC​,随后输入:wq​保存文件

CheckUpsmonConf() { local conf_size=`stat $UPSMON_CONF |grep Size|cut -d" " -f 4` # mode: local/remote local mode=$1 local server_ip="0.0.0.0" if [ 0 -eq $conf_size ]; then if [ -f $UPSMON_CONF_BACKUP ]; then /bin/cp $UPSMON_CONF_BACKUP $UPSMON_CONF else ShowLog "synoupscommon: cannot rescue $UPSMON_CONF" fi fi if [ "$mode" == "local" ]; then /bin/sed -i "/^MONITOR/cMONITOR ups@localhost 1 monuser secret master" $UPSMON_CONF elif [ "$mode" == "remote" ]; then if [ $# -ne 2 ]; then ShowLog "synoupscommon: CheckUpsmonConf(): remote mode need set server_ip" return 1 fi server_ip=$2 /bin/sed -i "/^MONITOR/cMONITOR ups@${server_ip} 1 monuser secret slave" $UPSMON_CONF fi return 0 } 使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

回到群晖界面配置,点击“控制面板”-》“界面和电源”-》“不断电系统”,取消勾选“启用 UPS 支持”,点击“应用”按钮,然后再重启启用UPS,类型选择“Synology不断电系统服务器”,IP地址处填入你的飞牛NAS的地址,最后再点击“应用”按钮。这一步需要完成UPS启用服务的“重启”,即关闭再打开。(注意:出现无法与网络不断电系统服务器创建联机问题不大,不要慌)

这里UI界面对应的文件在/usr/syno/etc/ups/synoups.conf​,可以通过sudo cat /usr/syno/etc/ups/synoups.conf​ 查看到其中的内容信息(感兴趣的可以看看,没啥大用,只是顺便提一下)

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

出现无法与网络不断电系统服务器创建联机问题不大,不要慌,通过sudo cat /var/log/messages |grep upsmon​ 命令,可以看到 “Startup successful” 和 “UPS [你的UPS名@UPSIP] connected”字样,这是成功连接UPS的证明。

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

最后输入sudo vim /usr/syno/bin/synoups​,在这个脚本的第69行和89行的“ups”字样都改为之前飞牛nas给你分配的UPS名称,随后保存退出

SynoUpsStateLog() { local ups_log_item="device.mfr device.model battery.charge battery.runtime battery.voltage input.voltage output.voltage ups.load ups.status" if [ $# -ge 1 ]; then logger -p user.err -t synoups $1 fi logger -p user.err -t synoups "=====log UPS status start=====" for item in $ups_log_item; do local upsc_result=`${BIN_UPSC} ups@${UPSMonServer} ${item}` logger -p user.err -t synoups "${item}=${upsc_result}" done logger -p user.err -t synoups "=====log UPS status end=====" } SYSLOG() { logger -p user.err -t upsmsg "$1" } UPSStatusGet() { ups_stat=`${BIN_UPSC} ups@${UPSMonServer} ups.status 2>/dev/null` if [ $? -ne 0 ]; then echo "ERR" return 255 fi for status in $ups_stat ; do case "$status" in "OL"|"OB"|"LB") echo "$status" return ;; esac done echo "ERR" } 使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

此时,群晖就顺利跟飞牛接上头了,断电关机也都会一并响应。

​​

测试验证

ssh页面ups连接显示

sudo upsc ups名称@ups的ip ups.status

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

测试关机时的ssh页面log显示

​sudo cat /var/log/messages |grep upsmon

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

测试关机时的群晖日志中心显示

使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

结语:

为解决这个问题,我查阅很多篇文章都没结果,后来发现早有大神“UC新闻震惊部”在2020年就摸索出来,随后由「Geek7even《极物研习社》」于2024年在百度百家号发了文章,也感谢这几位各位大佬网民的知识帮助,不过我也因此收获了许多关于nut方面的知识

附录:

群晖配置文件位置:

# 群晖配置文件位置: UPS_STATE="/run/ups_state" UPS_ROOT="/tmp/ups" UPS_LOCK=$UPS_ROOT"/ups.lock" FLOCK_FILE=$UPS_LOCK UPS_UDEVLOCK="/tmp/upsudevlock" SYNOUPS_CONF="/usr/syno/etc/ups/synoups.conf" UPSSCHED_CONF="/etc/ups/upssched.conf" UPSMON_CONF="/etc/ups/upsmon.conf" UPSMON_CONF_BACKUP="/etc.defaults/ups/upsmon.conf" UPS_CONF="/etc/ups/ups.conf" UPS_CONF_BACKUP="/etc.defaults/ups/ups.conf" NUTSCAN_USB_H="/etc/ups/nutscan-usb.h" UPS_TABLE="/lib/udev/devicetable/usb.nut-hid" BIN_UPSMON="/usr/sbin/upsmon" BIN_UPSD="/usr/sbin/upsd" BIN_UPSC="/usr/bin/upsc" UPSMON_PID="/run/upsmon.pid" UPSD_PID="$UPS_STATE/upsd.pid" BIN_FILE_UPSC="/usr/bin/upsc" BIN_SYNONOTIFY="/usr/syno/bin/synonotify"

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

Candyank

喜爱各种电子产品

关注 打赏
最新文章 热门文章
4
扫一下,分享更方便,购买更轻松