IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    UPS 低电压时通过群晖实现 Ubuntu 自动关机

    Teacher Du发表于 2024-11-01 03:51:26
    love 0

    之前文章提到杜老师买了 UPS,该设备支持低电压通知,直接对接到群晖上,而服务器没有办法获取电池信息。恰好看到 obaby 的解决方案,这里整理一下,供有需要的小伙伴参考!

    群晖设置

    首先将群晖设置为 UPS 服务器,当 UPS 的状态信息通过 USB 传输到群晖后,群晖可以通过网络将信息告知接收端。进入控制面板,进入到硬件和电源,勾选“启动网络 UPS 服务器”,进入“允许的 Synology NAS 设备”,在 IP 地址处输入接收端的 IP 即可「确定后别忘了点右下方处的应用」

    工具配置

    然后在接收端安装接收工具,命令如下:

    1
    apt -y install nut

    修改配置文件,路径为etc/nut/nut.conf,将模式改为客户端,参数如下:

    1
    MODE=netclient

    修改服务指向配置文件,路径为/etc/nut/upsmon.conf,修改以下参数「83 行左右」

    1
    MONITOR ups@192.168.31.87 1 monuser secret slave

    重启接收工具服务:

    1
    systemctl restart nut-client

    将接收服务设置为开机启动:

    1
    systemctl enable nut-client

    线路测试

    如果不想通过拔电源来测试上面设置是否生效,可以用 upsc ups@192.168.31.87 命令测试,出现如下信息代表配置成功:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Init SSL without certificate database
    battery.charge: 100
    battery.voltage: 13.50
    battery.voltage.high: 13.00
    battery.voltage.low: 10.40
    battery.voltage.nominal: 12.0
    device.type: ups
    driver.name: blazer_usb
    driver.parameter.pollinterval: 5
    driver.parameter.port: auto
    driver.parameter.synchronous: no
    driver.version: DSM7-1-1-42930-workplus-version2-repack-42930-220712
    driver.version.internal: 0.12
    input.current.nominal: 4.0
    input.frequency: 50.0
    input.frequency.nominal: 50
    input.voltage: 230.8
    input.voltage.fault: 230.8
    input.voltage.nominal: 220
    output.voltage: 230.8
    ups.beeper.status: enabled
    ups.delay.shutdown: 30
    ups.delay.start: 180
    ups.load: 0
    ups.productid: 5161
    ups.status: OL
    ups.type: offline / line interactive
    ups.vendorid: 0665

    关机脚本

    服务会在 UPS 发送低电压时通知服务器关机,触发时机默认为 UPS 电量剩余约 20%。当然可自定义关机逻辑。如果要自定义关机设置需要进行如下设置,使用如下命令修改配置文件:

    1
    vim /etc/nut/upsmon.conf

    添加如下内容:

    1
    2
    NOTIFYCMD /sbin/upssched
    NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC

    然后用命令 vim /etc/nut/upssched.conf 修改配置文件,添加如下内容:

    1
    2
    3
    4
    5
    6
    CMDSCRIPT /etc/nut/upssched-cmd
    PIPEFN /etc/nut/upssched.pipe
    LOCKFN /etc/nut/upssched.lock
    AT ONBATT * START-TIMER power-off 60
    AT ONLINE * CANCEL-TIMER power-off
    AT ONLINE * EXECUTE power-on

    接着用命令 vim /etc/nut/upssched-cmd 修改配置文件,添加如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/sh
    case $1 in
    onbatt)
    logger -t upssched-cmd "UPS running on battery"
    /usr/sbin/upsmon -c fsd
    ;;
    power-off)
    logger -t upssched-cmd "UPS running on battery power off"
    /usr/sbin/upsmon -c fsd
    ;;
    shutdowncritical)
    logger -t upssched-cmd "UPS on battery critical, forced shutdown"
    /usr/sbin/upsmon -c fsd
    ;;
    upsgone)
    logger -t upssched-cmd "UPS has been gone too long, can't reach"
    ;;
    *)
    logger -t upssched-cmd "Unrecognized command: $1"
    ;;
    esac


沪ICP备19023445号-2号
友情链接