在 UPS 电源不足时执行脚本

在 UPS 电源不足时执行脚本

我已将 UPS 连接到 ubuntu,并且它被识别了。但是我不喜欢我在 ubuntu 电源设置中看到的选项。我还有另一台 PC 也连接到同一个 UPS。因此,我希望 ubuntu 桌面在电量约为 50% 时执行脚本,这样我的第二台 PC 也可以正常休眠。然后我可以使用相同的脚本使我的 ubuntu PC 休眠。

有没有可能以不破坏 ubuntu 的 UPS 监控实现的方式做到这一点?我读到我可以安装 nut,但出现了一些错误,也许是冲突

● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
   Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; vendor preset: enabled)
   Active: failed (Result: protocol) since Sat 2019-07-13 02:09:46 MSK; 11ms ago
  Process: 13906 ExecStart=/sbin/upsmon (code=exited, status=0/SUCCESS)

也许我可以捕获一些 dmesg 消息或者使用一些本机工具检查 UPS 的状态?

答案1

Ubuntu 自动跟踪所有电池状态:

Ubuntu 电池状态

您也可以从终端 / shell / bash 脚本访问上面的 GUI 屏幕中显示的相同信息(它们在很多方面都是同一件事)。

要从 CLI 获取相同的信息,请使用:

$ upower -i $(upower -e | grep -i UPS)
  native-path:          /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2:1.0/usbmisc/hiddev2
  vendor:               CPS
  model:                CP550HGa
  serial:               BFBB104#BI1.g
  power supply:         yes
  updated:              Fri 12 Jul 2019 06:35:56 PM MDT (12 seconds ago)
  has history:          yes
  has statistics:       yes
  ups
    present:             yes
    state:               fully-charged
    warning-level:       none
    time to empty:       25.5 minutes
    percentage:          100%
    icon-name:          'battery-full-charged-symbolic'

然后将其缩小到百分比使用:

$ upower -i $(upower -e | grep -i UPS) | grep -i percentage
    percentage:          100%

然后提取第二列使用:

$ upower -i $(upower -e | grep -i UPS) | grep -i percentage | cut -d':' -f2
          100%

然后仅提取数字并消除前导空格和尾随 %,使用:

$ upower -i $(upower -e | grep -i UPS) | grep -i percentage | sed 's/[^0-9]*//g'
100

现在将您想要的内容分配给变量并显示它:

$ PERCENT=$(upower -i $(upower -e | grep -i UPS) | grep -i percentage | sed 's/[^0-9]*//g')
$ echo $PERCENT
100

下一步是编写类似这样的脚本

#!/bin/bash

while true; do
    PERCENT=$(upower -i $(upower -e | grep -i UPS) | grep -i percentage \
        | sed 's/[^0-9]*//g')
    if [[ "$PERCENT" -lt 50 ]] ; then
        # email my cell phone
        mail -s "Electricity grid has shut down, run home" [email protected]
        # text my cell phone
        curl -X POST https://textbelt.com/text --data-urlencode \
            phone="999-333-4567" --data-urlencode \
            message="Electricity grid has shot down, run home" -d key=textbelt
    fi
    sleep 300 # Sleep for 5 minutes to reduce resource usage
done

这是我将使用的脚本,在您的情况下将其调整为休眠状态(我有一台笔记本电脑,所以我从不休眠)。我的 UPS 是用于窗户风扇的,而不是笔记本电脑,笔记本电脑有自己的电池,当我上班时会暂停。不同的人可以以不同的方式使用技术。

相关内容