web-dev-qa-db-ja.com

UPSの低電力でスクリプトを実行する

UPSをubuntuに接続しましたが、認識されました。ただし、ubuntuの電源設定に表示されるオプションが気に入らない。同じUPSに別のPCも接続しています。ですから、ubuntuデスクトップで電力が約50%のときにスクリプトを実行して、2台目のPCも適切に休止状態にできるようにしたいと考えています。その後、同じスクリプトでubuntu PCを休止状態にすることができます。

UPSモニターのubuntu実装を壊さない方法でそれを行うことは可能ですか?私はナットをインストールできることを読みましたが、いくつかのエラーがあります、おそらくそれは矛盾です

● 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
POMATu

Ubuntuはすべてのバッテリーの状態を自動的に追跡します。

Ubuntu Batteries Statuses

上記のGUI画面に表示される同じ情報は、ターミナル/シェル/ bashスクリプトからもアクセスできます(これらはすべて、多くの点で同じものです)。

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%

次に、2番目の列を抽出します。

$ 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はウィンドウファン用であり、ノートパソコンではなく、自分のバッテリーがあり、仕事中に一時停止されます。テクノロジーは人によって使い方が異なります。

1