如何设置家用威联通 NAS UPS 断电后自动关机并通知其他设备?
场景
备注:
求轻喷, 求放过.
我真的是个理线方面的白痴. 这已经是我的极限了.
我的家庭实验室 Homelab 服务器集群配置如下.


上半部分之前已经介绍过了, 这里就不再赘述了. 今天重点介绍介绍 UPS 和 NAS 部分.
1台 UPS, 型号为 APC Back-UPS 650. 插座插着: NAS 和 插线板(插线板上连了4个 N100小主机和其他; 通过数据端口和 NAS 连接). 如下图: (求轻喷, 求放过. )

1 台威联通 QNAP TS-453Bmini NAS. 如下图: (求轻喷, 求放过. )

现在的需求是:
- UPS 断电后一段时间(如 5min 后), NAS 自动断电;
- NAS 作为 UPS Server 运行, UPS 断电后, 通知其他 4 台 N100 小主机
- 4 台 N100 小主机收到通知后, 也过一段时间(如 5min 后)自动断电.
具体实现概述如下:
- 物理层面: UPS 通过数据线连接到 NAS USB
- 软件层面:
- NAS: 通过 UI 配置断电后操作;
- NAS: 通过 UI 启用 UPS Server 配置;
- N100 小主机: UPS Client 配置.
细节步骤如下:
实战
1. 物理层面: UPS 通过数据线连接到 NAS USB
这里我就不放图了, 因为就在上面那一堆线里面... 这个机柜在墙角, 我左跪右跪看了一圈也没找到能拍清楚的角度...
APC UPS 自带一根数据线, 具体操作如下:
使用 USB 缆线将 Back-UPS 连接到 NAS。将一端插到 Back-UPS 后面板上的 POWERCHUTE 端口,另一端插到计算机上的 USB 端口。
就是下图的 ⑥:

完成.
验证
完成后, 我们可以访问 威联通 QNAP QTS 界面, 会看到 UPS 的相关信息, 具体如下:


接下来进入软件层面操作.
2. NAS: 通过 UI 配置断电后的操作
具体如下:

- 进入 威联通 QNAP QTS 界面;
- 访问 控制台 -> 系统 -> 外界设备 -> UPS
- 选择 USB 连接 -> 当电源失效时, 10 分钟后进入自动保护模式. (当然, 你可以选择另一选项, 即: 关闭 NAS)
如果你只需要 UPS 和 NAS 联动, 那么到这里就配置完成了.
3. NAS: 通过 UI 启用 UPS Server 配置
如果你还需要和其他主机/服务器联动, 那么需要通过 UI 启用 UPS Server 配置, 具体如上图 ⑥:
- 启用 网络不间断电源服务器(即 UPS Server)
- 并添加 4 台 N100 小主机的 IP 地址. 如: 192.168.3.154
完成.
额外说明
威联通 QNAP QTS 在后台, 实际上运行的是: upsd 服务, 监听了 3493 端口. 如下:
[admin@NAS33657A ups]# netstat -tuln | grep 3493
tcp 0 0 0.0.0.0:3493 0.0.0.0:* LISTEN
[admin@NAS33657A ups]# ps -ef|grep ups
6960 admin 996 S grep ups
14369 admin 1764 R /usr/local/ups/bin/usbhid-ups -a qnapups -u admin
15999 admin 1536 S /usr/sbin/upsd -u admin
23676 admin 8548 S /usr/sbin/upsutil
这里我们需要知道的是:
- QNAP UPS Server 的 名称是:
qnapups
威联通 QNAP QTS 的 UPS 配置, 具体位于 /etc/config/ups/ 目录下, 如下:
[admin@NAS33657A ups]# ls
ups.conf upsd.conf upsdrv.map upsd.users upsmon.conf
[admin@NAS33657A ups]# cat upsd.users
[admin]
password = 123456
allowfrom = localhost
actions = SET
instcmds = ALL
upsmon master # or upsmon slave
这里我们需要知道的是:
- QNAP UPS Server 的用户是:
admin - 密码是:
123456
总结一下, 威联通 QNAP QTS Server 信息:
- 实际上运行的是:
upsd服务 - 监听了
3493端口 - UPS Server 的 名称是:
qnapups( 注意: 在威联通所有 NAS 上, 这个名字都是固定的) - 用户是:
admin - 密码是:
123456
后面 N100 配置 UPS Client 需要用到这些信息.
4. N100 小主机: UPS Client 配置
我的 N100 小主机是 Ubuntu 24.04, 要在 Linux 系统上实现与 UPS(不间断电源)服务器的交互,并在断电 5 分钟后自动关机,通常需要使用 UPS 监控软件。常见的工具是 NUT(Network UPS Tools),它是一个开源的 UPS 监控和管理工具。
既然已经在 NAS 上运行了 upsd,并且 UPS 是 APC Back-UPS 650 通过 USB 连接到 NAS,那么在小主机上,可以通过配置 NUT 客户端(upsmon)来与 NAS 上的 upsd 交互,并实现断电 5 分钟后关机。
以下是详细的步骤:
4.1. 在 Linux 设备上安装 NUT 客户端
在需要监控 UPS 的 Linux 设备上,安装 NUT 客户端工具:
对于基于 Debian/Ubuntu 的系统:
sudo apt-get update
sudo apt-get install nut-client
如果你是基于 Red Hat/CentOS 的系统:
sudo yum install nut-client
4.2. 配置 NUT 客户端
在 Linux 设备上,编辑 NUT 客户端的配置文件 /etc/nut/upsmon.conf,添加以下内容:
MONITOR qnapups@nas_ip 1 admin 123456 slave
qnapups:这是 QNAP NAS 上 UPS 的名称( 注意: 在威联通所有 NAS 上, 这个名字都是固定的)。nas_ip:NAS 的 IP 地址。admin:NAS 上定义的用户名。123456:NAS 上定义的密码。slave:表示这台设备是客户端,不是主控设备。
4.3. 设置断电后关机
在 /etc/nut/upsmon.conf 中,添加以下行以设置断电 5 分钟后关机:
SHUTDOWNCMD "/sbin/shutdown -h +5"
4.4. 设置 NUT 运行模式
在 /etc/nut/nut.conf 中, 有 4 种运行模式, 分别为:
none: NUT 没有配置,或者使用集成电源管理,或者使用一些外部系统来启动 NUT 组件. 因此,不需要由 NUT 软件包捆绑的脚本或服务启动任何内容。standalone: 这种模式只针对本地配置,由 1 个 UPS 保护本地系统。这意味着要启动 3 个 NUT 层(驱动程序、upsd和upsmon)及相应的配置文件。这种模式还可以处理 UPS 冗余。netserver: 与独立配置相同,但还需要一些额外的网络访问控制(防火墙、tcp包装器)以及在upsd.conf中可能需要一个特定的 LISTEN 指令。由于此模式对网络开放,因此应特别关注安全问题。 -- 很明显, NAS UPS Server 是这种模式.netclient: 这种模式只要求upsmon(以及它可能使用的工具,如upssched或自定义脚本)来监视远程NUT服务器,并可能关闭此系统(在这种情况下,upsmon的一部分必须以root身份运行)。-- 很明显, 我们需要设置 Linux 设备为此模式.
调整 mode 配置为:
MODE=netclient
4.4. 启动 NUT 客户端服务
启动 upsmon 服务并设置为开机自启:
对于基于 systemd 的系统:
sudo systemctl start nut-client
sudo systemctl enable nut-client
对于基于 SysVinit 的系统:
sudo service nut-client start
sudo update-rc.d nut-client defaults
查看启动状态:
4.4.1 报错修复
这里第一次启动后报了1个错误, 具体如下:
Failed to open '/usr/lib/tmpfiles.d/nut-common-tmpfiles.conf': No such file or directory
❯ sudo systemctl status nut-client.service
○ nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
Loaded: loaded (/usr/lib/systemd/system/nut-monitor.service; enabled; preset: enabled)
Active: inactive (dead) since Sat 2025-03-22 17:12:20 CST; 8s ago
Duration: 5ms
Process: 347996 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf (code=exited, status=1/FAILURE)
Process: 347998 ExecStart=/sbin/upsmon -F (code=exited, status=0/SUCCESS)
Main PID: 347998 (code=exited, status=0/SUCCESS)
CPU: 15ms
Mar 22 17:12:20 n100-jumper-2 systemd[1]: Starting nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller...
Mar 22 17:12:20 n100-jumper-2 systemd-tmpfiles[347996]: Failed to open '/usr/lib/tmpfiles.d/nut-common-tmpfiles.conf': No such file or directory
Mar 22 17:12:20 n100-jumper-2 systemd[1]: Started nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller.
Mar 22 17:12:20 n100-jumper-2 nut-monitor[347998]: upsmon disabled, please adjust the configuration to your needs
Mar 22 17:12:20 n100-jumper-2 nut-monitor[347998]: Then set MODE to a suitable value in /etc/nut/nut.conf to enable it
Mar 22 17:12:20 n100-jumper-2 systemd[1]: nut-monitor.service: Deactivated successfully.
所以执行如下命令修复:
sudo touch /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf
启动后再次运行, 没有报错:
❯ sudo systemctl status nut-client.service
● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
Loaded: loaded (/usr/lib/systemd/system/nut-monitor.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-03-22 17:15:21 CST; 2s ago
Process: 350296 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf (code=exited, status=0/SUCCESS)
Main PID: 350298 (upsmon)
Tasks: 2 (limit: 18754)
Memory: 3.6M (peak: 3.8M)
CPU: 22ms
CGroup: /system.slice/nut-monitor.service
├─350298 /lib/nut/upsmon -F
└─350310 /lib/nut/upsmon -F
Mar 22 17:15:21 n100-jumper-2 systemd[1]: Starting nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller...
Mar 22 17:15:21 n100-jumper-2 systemd[1]: Started nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller.
Mar 22 17:15:21 n100-jumper-2 nut-monitor[350298]: fopen /run/nut/upsmon.pid: No such file or directory
Mar 22 17:15:21 n100-jumper-2 nut-monitor[350298]: Could not find PID file to see if previous upsmon instance is already running!
Mar 22 17:15:21 n100-jumper-2 nut-monitor[350298]: Using power down flag file /etc/killpower
Mar 22 17:15:21 n100-jumper-2 nut-monitor[350298]: UPS: qnapups@192.168.3.216 (secondary) (power value 1)
Mar 22 17:15:21 n100-jumper-2 nut-monitor[350310]: Init SSL without certificate database
4.5. 测试配置
4.5.1 检查 UPS 状态
在 Linux 设备上,使用以下命令检查是否能够正确获取 UPS 状态:
❯ upsc qnapups@192.168.3.216
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: not set
battery.mfr.date: 2019/12/10
battery.runtime: 1140
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.7
battery.voltage.nominal: 12.0
device.mfr: APC
device.model: Back-UPS 650
device.serial: 3B1950X62634
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS1
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: APC HID 0.96
driver.version.internal: 0.41
input.sensitivity: low
input.transfer.high: 266
input.transfer.low: 165
input.transfer.reason: input voltage out of range
input.voltage: 226.0
input.voltage.nominal: 220
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 822.A3.I
ups.firmware.aux: A3
ups.load: 38
ups.mfr: APC
ups.mfr.date: 2019/12/10
ups.model: Back-UPS 650
ups.productid: 0002
ups.serial: 3B1950X62634
ups.status: OL
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d
如果配置正确,你应该能够看到 UPS 的详细信息,例如电池状态、输入电压等。
4.5.2 模拟断电测试
你可以通过断开 UPS 的电源来测试配置是否正确。如果一切正常,Linux 设备应该在断电 5 分钟后自动关机。
全部完成!
5. 其他注意事项
- 防火墙配置:确保 NAS 的防火墙允许来自 Linux 设备的
3493端口的连接。 - 权限问题:如果你是其他 NAS, 需要确保 NAS 上的
upsd.users文件中定义的权限允许客户端设备访问 UPS 信息。 - 时间同步:确保 NAS 和 Linux 设备的时间同步,以避免因时间差异导致的监控问题。
总结
通过以上步骤,你应该能够实现:
当 UPS 断电后:
- NAS 自动关机
- 其他 Linux 设备 自动关机
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
如何设置家用威联通 NAS UPS 断电后自动关机并通知其他设备?的更多相关文章
- 威联通(NAS)应用篇:自建OwnCloud网盘(百度网盘,拜拜~~~)
基础环境: 威联通一台 已安装好 ContainerStation 公网 IP(非必须) 自有公网域名 下载镜像文件 提醒:建议先把威联通的自带镜像源改为国内的阿里云镜像源,教程:https://ww ...
- 威联通(NAS)搭建个人音乐中心
我为什么要自己搭建音乐服务 曾记得早些年,音乐是可以随便在线听,随便下载的,没有付费这么一说的(背后是音乐平台提供的版权支持).我们听音乐也就可以很随意,但是这几年,音乐的版权开始管理的严禁,音乐没地 ...
- 威联通NAS 网站无法登录,可以ssh情况下重启设备方法
步骤: 1.VPN登录NAS 2.PUTTY SSH登录设备 3.reboot设备 等待重启约5分钟.
- 威联通(NAS)搭建个人图床
名词解释: 图床:一般是指储存图片的服务器,有国内和国外之分.国外的图床由于有空间距离等因素决定访问速度很慢影响图片显示速度.国内也分为单线空间.多线空间和cdn加速三种. 更详细的内容,请左转查看百 ...
- VMware安装黑威联通教程+文件 亲身测试成功 老骥伏枥黑威联通母盘QNAP1G-BOOT 1G
1.首先致敬老骥伏枥大神的帖子. [老骥伏枥-原创]制作黑威联通启动盘:进阶篇 2.其次感谢这位作者的安装教程 作者:f541883216 [老骥伏枥-原创]用我的黑威联通启动盘在WMware搭建系统 ...
- 铁威马NAS如何开启二次验证提高系统安全性
想到登录TNAS时更安全?直接开启OTP二次验证,通过 TNAS mobile生成的一次性密码登录NAS存储,简单设置,提升TOS系统访问安全性给你TNAS双重保护. 1.首先,确认你的TOS系统在5 ...
- 铁威马NAS添加SSL证书实现HTTPS安全访问
如何让你的铁威马NAS域名可以支持HTTPS呢?其实想要支持HTTPS,只需要获取第三方签发的证书,信任你的域名就可以啦! 在铁威马TOS 4.2系统中,允许用户导入安全证书,或者自我颁发安全证书,这 ...
- 威联通 移动硬盘路径 /share/USBDisk1
威联通 移动硬盘路径 /share/USBDisk1 cd /share/USBDisk3/Movies
- kubernetes集群断电后etcd启动失败之etcd备份方案
一.问题描述 二进制部署的单Master节点的v1.13.10版本的集群,etcd部署的是3.3.10版本,部署在master节点上.在异常断电后,kubernetes集群无法正常启动.这里通过查看k ...
- haoop 断电后导致block文件损坏
hbase将dfs作为存储,公司测试环境断电后,hadoop集群会因此而损坏一些block文件,这个时候,客户端在读取文件时会报一些错: DataXceiver error processing RE ...
随机推荐
- DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
Insecure CAPTCHA(不安全验证) Insecure CAPTCHA(不安全验证)漏洞指的是在实现 CAPTCHA(完全自动化公共图灵测试区分计算机和人类)机制时,未能有效保护用户输入的验 ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-11- 标签页(tab)操作 - 下篇 (详细教程)
1.简介 本来按照计划这一系列的文章应该介绍Context和Page两个内容的,但是宏哥看了官方文档和查找资料发现其实和宏哥在Python+Playwright系列文章中的大同小异,差不了多少,再在这 ...
- redis-总结列表
基础 启动命令 redis-server kconfig/redis.conf 通过指定的配置文件启动服务(kconfig/redis.conf是复制过来的) redis-cli -p 6379 使用 ...
- biancheng-linux-shell
参考http://c.biancheng.net/view/706.html Shell变量:Shell变量的定义.赋值和删除 Shell 支持以下三种定义变量的方式: variable=valuev ...
- C 简答题
1.从C语⾔执⾏效率⽅便,简述下C语⾔采取了哪些措施提⾼执⾏效率.(14分 or 20分)(年年考,⾮常重要) ①使⽤指针:有些程序⽤其他语⾔也可以实现,但C能够更有效地实现:有些程序⽆法⽤其它语⾔实 ...
- 面试题: == 和 equals() 区别【包装类重写了object类中的equals方法】
/* * * 面试题: == 和 equals() 区别 * * 一.回顾 == 的使用: * == :运算符 * 1. 可以使用在基本数据类型变量和引用数据类型变量中 * 2. 如果比较的是基本数据 ...
- Codeforces Round 962 (Div. 3)
题目链接:Codeforces Round 962 (Div. 3) 总结:ABC秒过,D有点难评了,E优化很妙. A. Legs tag:签到 void solve(){ cin >> ...
- 小程序image图片缩小不变形
使用mode =aspectFill 值 说明 scaleToFill 缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 图片会变形 aspectFit 缩放模式,保持纵横 ...
- zos静态网站托管的使用和原理
本文分享自天翼云开发者社区<zos静态网站托管的使用和原理> 作者:Ywq zos静态网站托管是一种功能强大且方便的功能特性,此特性主要用于将静态网站的文件(例如HTML.CSS.Java ...
- Nessus 扫描Web服务
Nessus 扫描Web服务 1.点击 New Scan,选择 Web Application Tests 2.填写扫描名称和扫描目标 3.点击 Discovery ,选择 Scan Type 为全端 ...