收起左侧

开发非智能交互UPS自动关机套件

3
回复
615
查看
[ 复制链接 ]

1

主题

2

回帖

0

牛值

江湖小虾

2025-2-11 11:55:00 显示全部楼层 阅读模式

背景:

许多用户使用非智能交互UPS为飞牛NAS提供断 电保护。然而,这些UPS无法与NAS直接通信,导致市电停电时无法自动关机,存在数据丢失风险,并可能耗尽UPS储能,影响其使用寿命。

建议:

开发一个飞牛OS套件,实现非智能交互UPS在市电停电时自动关闭NAS的功能。该套件通过以下方式工作:

  1. 网络检测: 套件定期(例如每分钟,可设置)ping网关。
  2. 断 电判断: 如果连续多次(例如3次,可设置)ping失败,则判断为市电停电。
  3. 延迟关机: 等待一段时间(例如1分钟,可设置)后,执行NAS关机操作,以保护数据并节约UPS储能。

实现方案:

  1. 后台服务: 开发一个后台服务,负责ping网关、判断断 电状态并执行关机命令。
  2. 配置文件: 提供配置文件,允许用户自定义ping间隔、失败次数和关机延迟时间。
  3. 用户界面: 在飞牛OS管理界面中添加设置选项,方便用户配置和启用该功能。
  4. 日志记录: 记录ping结果和关机操作,便于用户排查问题。

技术细节:

  • 使用系统命令(如 ping)实现网络检测。
  • 使用脚本或编程语言(如Python)实现逻辑判断和关机操作。
  • 将服务注册为系统守护进程,确保其持续运行。

优势:

  • 廉价数据保护: 自动关机避免数据丢失。
  • 老旧UPS延寿: 节约UPS储能,延长其使用寿命。
  • 易用性: 用户界面简化配置过程。
  • 灵活性: 可自定义参数适应不同需求。

总结:

该套件为非智能交互UPS用户提供了一种简单有效的断 电保护方案,提升数据安全性和UPS使用效率。希望飞牛OS团队考虑开发此功能,进一步完善NAS的断 电保护机制。

收藏
送赞 3
分享

1

主题

2

回帖

0

牛值

江湖小虾

2025-2-11 11:55:43 楼主 显示全部楼层
以下是一个基于Shell脚本的实现方案,用于在飞牛OS上实现非智能交互UPS自动关机功能。该脚本通过定期ping网关来判断市电是否断 电,并在检测到断 电后执行关机操作。

---

### **脚本内容**

```bash
#!/bin/bash

# 配置参数
PING_INTERVAL=60          # 每隔60秒ping一次网关
PING_FAIL_COUNT=3         # 连续3次ping失败则判断为断 电
SHUTDOWN_DELAY=60         # 等待60秒后关机
GATEWAY_IP="192.168.1.1"  # 网关IP地址,根据实际情况修改
LOG_FILE="/var/log/ups_auto_shutdown.log"  # 日志文件路径

# 初始化计数器
fail_count=0

# 日志函数
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

# 主循环
while true; do
    # 尝试ping网关
    if ping -c 1 "$GATEWAY_IP" > /dev/null 2>&1; then
        # ping成功,重置计数器
        fail_count=0
    else
        # ping失败,增加计数器
        fail_count=$((fail_count + 1))
        log "Ping failed! Count: $fail_count"
    fi

    # 判断是否达到失败次数
    if [ "$fail_count" -ge "$PING_FAIL_COUNT" ]; then
        log "Power outage detected! Preparing to shut down..."
        sleep "$SHUTDOWN_DELAY"
        log "Shutting down now..."
        shutdown -h now  # 执行关机命令
        exit 0
    fi

    # 等待下一次ping
    sleep "$PING_INTERVAL"
done
```

---

### **实现步骤**

1. **创建脚本文件**
   - 将上述脚本保存为文件,例如`/usr/local/bin/ups_auto_shutdown.sh`。
   - 使用以下命令赋予脚本执行权限:
     ```bash
     chmod +x /usr/local/bin/ups_auto_shutdown.sh
     ```

2. **配置网关IP**
   - 修改脚本中的`GATEWAY_IP`变量,将其设置为你的路由器或网关的IP地址。

3. **设置日志文件**
   - 脚本会将运行日志写入`/var/log/ups_auto_shutdown.log`。确保日志文件路径可写,或根据需要修改路径。

4. **测试脚本**
   - 手动运行脚本,确保其正常工作:
     ```bash
     /usr/local/bin/ups_auto_shutdown.sh
     ```
   - 可以通过断开网络连接模拟断 电,观察脚本是否能够正确检测并执行关机操作。

5. **设置为开机自启动**
   - 为了让脚本在系统启动时自动运行,可以将其添加到系统的启动项中。
   - 编辑`/etc/rc.local`文件,在文件末尾添加以下内容:
     ```bash
     /usr/local/bin/ups_auto_shutdown.sh &
     ```
   - 确保`/etc/rc.local`文件具有可执行权限:
     ```bash
     chmod +x /etc/rc.local
     ```

6. **调整参数(可选)**
   - 根据实际需求,调整脚本中的以下参数:
     - `PING_INTERVAL`:ping网关的时间间隔。
     - `PING_FAIL_COUNT`:连续ping失败的次数。
     - `SHUTDOWN_DELAY`:检测到断 电后延迟关机的时间。

---

### **注意事项**
- **网关稳定性**:确保网关设备稳定运行,避免因网关问题导致误判。
- **UPS续航时间**:根据UPS的续航能力,合理设置`PING_INTERVAL`和`SHUTDOWN_DELAY`,确保在UPS电量耗尽前完成关机。
- **日志监控**:定期检查日志文件,确保脚本正常运行。

---

### **总结**
该脚本通过简单的网络检测机制,实现了非智能交互UPS在市电停电时自动关闭NAS的功能。通过灵活的配置参数,用户可以根据实际需求调整脚本行为。希望该方案能够帮助飞牛OS用户更好地保护NAS设备和数据安全!

1

主题

10

回帖

0

牛值

江湖小虾

2025-3-28 10:42:54 显示全部楼层
顶上去,建议官方开发插件。

4

主题

6

回帖

0

牛值

江湖小虾

2025-4-3 13:56:51 显示全部楼层
https://post.smzdm.com/p/a96vqwre/   曾经搜到的一个小配件 价格好像30来块钱 可以试试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则