You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程获取Back-UPS剩余电量以实现低电量自动关机

如何通过编程获取Back-UPS剩余电量以实现低电量自动关机

嘿,这个需求其实挺常见的,我之前帮朋友处理过类似的情况,用apcupsd这个专门针对APC UPS(包括你用的Back-UPS系列)的管理工具就能完美解决,给你一步步拆解实现步骤:

1. 安装apcupsd工具

不同Linux发行版的安装命令略有不同:

  • Debian/Ubuntu系:
    sudo apt update && sudo apt install apcupsd
    
  • CentOS/RHEL系:
    sudo yum install apcupsd
    

2. 配置apcupsd与UPS通信

安装完成后需要调整配置文件,让工具能识别你的UPS:
编辑配置文件sudo nano /etc/apcupsd/apcupsd.conf,重点修改以下几个参数:

  • UPSCABLE:如果是USB连接的UPS,设为usb;如果是串口连接,对应设为smart或其他类型
  • UPSTYPE:USB连接的话设为usb
  • DEVICE:USB连接时可以留空,或者填/dev/usb/hiddev0(部分系统需要)

修改完后重启服务让配置生效:

sudo systemctl restart apcupsd

3. 验证是否能获取UPS电量信息

运行以下命令查看UPS状态:

apcaccess status

输出结果里会有一行类似BCHARGE : 98.0 Percent的内容,BCHARGE后面的数值就是剩余电量百分比。

4. 编写电量检查脚本

写一个简单的shell脚本,用来提取电量并判断是否需要关机:
创建脚本文件sudo nano /usr/local/bin/ups_check.sh,内容如下:

#!/bin/bash
# 获取剩余电量(取整数部分)
BATTERY=$(apcaccess status | grep BCHARGE | awk '{print $3}' | cut -d. -f1)

# 判断电量是否低于30%
if [ $BATTERY -lt 30 ]; then
    # 记录日志到系统日志文件
    logger "UPS剩余电量为${BATTERY}%,低于阈值,执行自动关机"
    # 执行关机命令
    sudo shutdown -h now
fi

给脚本添加执行权限:

sudo chmod +x /usr/local/bin/ups_check.sh

5. 设置定时任务(cron)

让脚本每10分钟运行一次,打开cron编辑界面:

crontab -e

添加以下一行内容(注意替换脚本路径为你实际的路径):

*/10 * * * * /usr/local/bin/ups_check.sh

保存退出后,cron就会自动按设定频率执行脚本了。

一些注意事项

  • 确保apcupsd服务处于运行状态:sudo systemctl status apcupsd,如果没启动就手动启动:sudo systemctl start apcupsd
  • 可以拔掉UPS电源模拟低电量场景,测试脚本是否能正常触发关机
  • 如果你的UPS不是APC品牌,可能需要换其他工具(比如nut),但Back-UPS基本都是APC的,apcupsd完全适用
  • 关机命令需要sudo权限,建议用root用户设置cron任务,或者给执行脚本的用户配置免密sudo权限

备注:内容来源于stack exchange,提问作者john-jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:30:30