Linux (NUT 一键脚本)

在 Linux 系统上通过官方一键脚本配置 NUT (Network UPS Tools) 管理瓦力方程智能 UPS。

Linux (NUT 一键脚本配置)

瓦力方程为 Linux 用户提供了基于 NUT (Network UPS Tools) 的一键配置脚本 setup-nut.sh。NUT 是业界使用最广泛的开源 UPS 管理框架,支持上千种设备,并具备网络化监控与多机联动能力。下载脚本后单条命令即可完成全部配置。

📥 下载脚本

下载 setup-nut.sh

或在终端直接获取:

1
2
3
curl -fsSLO https://www.wallecube.com/software/setup-nut.sh
chmod +x setup-nut.sh
sudo bash ./setup-nut.sh

简介

NUT (Network UPS Tools) 是业界使用最广泛的开源 UPS 管理框架,瓦力方程 W150 / W180 通过通用 usbhid-ups 驱动即可被 NUT 完整识别。

setup-nut.sh 会自动完成以下工作:

  • 安装 NUT 软件包(兼容 apt / dnf / yum
  • 生成 /etc/nut/ 下全部配置文件
  • 创建断电倒计时关机的事件脚本
  • 设置正确的文件权限与运行时目录
  • 启用并启动 systemd 服务
  • 自动验证 UPS 连接状态

适用系统

  • Debian / Ubuntu / Armbian
  • RHEL / CentOS / Rocky / AlmaLinux / Fedora
  • 飞牛 FnOS 等基于上述发行版的衍生系统

需要具备 apt-getdnfyum 任意一种包管理器,且能访问软件源。


安装步骤

1. 连接硬件

将 UPS 的 USB 信号线一端插入 UPS,另一端插入 Linux 主机。

2. SSH 登录并切换 root

1
2
ssh user@your-host
sudo -i

3. 下载脚本

直接从瓦力方程官网拉取最新版本:

1
2
curl -fsSLO https://www.wallecube.com/software/setup-nut.sh
chmod +x setup-nut.sh

也可在本页顶部点击「下载 setup-nut.sh」按钮,再用 scp 上传到主机。

4. 运行脚本

1
sudo bash ./setup-nut.sh

脚本启动后会依次询问 4 个参数,直接回车即可使用默认值:

参数默认值说明
UPS 名称upsNUT 中标识本台 UPS 的名字,用于 upsc ups@localhost 等命令
UPS 描述W150写入配置文件的型号描述,建议改为实际型号(W150 / W180)
监控用户密码mypasswordupsmon 登录 upsd 的密码,生产环境务必修改
断电关机延迟 (秒)30进入电池模式后多久仍未恢复市电就执行关机

确认后输入 Y 开始安装。


脚本执行流程

脚本按 6 个阶段顺序运行,任一步失败会立即终止。

① 安装 NUT 软件包

按优先级探测包管理器并安装 nut nut-client nut-server

② 生成配置文件

所有文件位于 /etc/nut/

  • nut.conf —— MODE=standalone,单机模式
  • ups.conf —— 声明 UPS 设备,驱动 usbhid-ups、端口 auto
  • upsd.conf —— LISTEN 127.0.0.1 3493,仅监听本机回环
  • upsd.users —— 创建 upsmon 监控账号(master 角色)
  • upsmon.conf —— 设置事件通知与兜底关机命令
  • upssched.conf —— 定义断电倒计时与来电取消逻辑

③ 创建事件处理脚本 /bin/upssched-cmd

倒计时到期时记录日志并执行 /sbin/shutdown -h now

④ 设置权限

  • 自动探测 nut / ups / root 用户与用户组
  • 配置文件归属 root:<nut组>,权限 640(保护密码)
  • 创建并修正 /var/run/nut 目录

⑤ 启用并启动服务

兼容不同发行版的 systemd 单元命名:

角色优先单元兼容单元
UPS 驱动nut-driver@<UPS_NAME>nut-driver / nut-driver.target
upsd 服务端nut-serverupsd
upsmon 监控nut-monitorupsmon

全部使用 systemctl enable --now 同时启动并设为开机自启。

⑥ 验证 UPS 连接

脚本会自动执行:

1
upsc ups@localhost

输出包含 device.type 即视为连接成功,并打印关键字段(状态、负载、电量、电压)。


状态验证

安装完成后,可随时通过以下命令查看 UPS 实时状态:

1
upsc ups@localhost

典型输出(节选):

1
2
3
4
5
ups.status: OL          # OL=市电正常, OB=电池供电, LB=低电量
ups.load: 12            # 当前负载百分比
ups.charge: 100         # 电池电量百分比
battery.voltage: 13.5
input.voltage: 230.0

常用命令

1
2
3
4
5
6
7
8
9
# 查看 UPS 实时状态
upsc ups@localhost

# 查看服务状态
systemctl status nut-server
systemctl status nut-monitor

# 跟踪事件日志(ONBATT / ONLINE / 关机倒计时等)
tail -f /var/log/syslog

工作原理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
市电中断
upsd 检测到 ONBATT 事件
upsmon 调用 upssched
upssched 启动 shutdown-timer 倒计时(默认 30 秒)
   ├── 期间市电恢复 → ONLINE 事件 → 取消倒计时
   └── 倒计时到期 → 调用 /bin/upssched-cmd
                  /sbin/shutdown -h now

常见问题排查

upscDriver not connected

  • 检查 USB 线是否插紧,使用 lsusb 确认能看到 UPS 设备。
  • 查看驱动状态:systemctl status nut-driver@ups

Access denied 或密码错误

  • 检查 /etc/nut/upsmon.conf 中的密码与 /etc/nut/upsd.users 是否一致。
  • 手动修改任一文件时务必同步另一文件。

断电后没有自动关机

  • 查看 syslog 是否出现 upssched-cmd 记录。
  • 确认 /bin/upssched-cmd 存在并具有可执行权限。
  • 确认 /var/run/nut 目录归属正确,能正常创建 pipe / lock 文件。

想要远程监控其它机器

  • 修改 /etc/nut/upsd.conf,新增 LISTEN <内网 IP> 3493
  • /etc/nut/upsd.users 中追加 slave 用户。
  • 远端主机以 slave 角色配置 upsmon.conf,并指向本机 IP。
  • 重启 nut-server 服务。

修改参数后如何重新生效

直接再次运行脚本即可,配置会被覆盖并自动重启服务:

1
sudo bash setup-nut.sh

卸载方法

如需完全移除 NUT 配置:

1
2
3
sudo systemctl disable --now nut-monitor nut-server "nut-driver@ups"
sudo apt-get remove --purge nut nut-client nut-server   # 或 dnf/yum remove nut*
sudo rm -rf /etc/nut /var/run/nut /bin/upssched-cmd

参数速查表

文件作用关键字段
/etc/nut/nut.conf运行模式MODE=standalone
/etc/nut/ups.confUPS 硬件定义driver / port / desc
/etc/nut/upsd.conf服务端监听LISTEN
/etc/nut/upsd.users监控账号password / upsmon master
/etc/nut/upsmon.conf客户端策略MONITOR / NOTIFYCMD / SHUTDOWNCMD
/etc/nut/upssched.conf事件调度AT ONBATT / AT ONLINE
/bin/upssched-cmd事件处理脚本shutdown-timer 分支

参考资料

这篇文档对你有帮助吗?

如果仍有疑问,欢迎随时联系我们的工程师团队。