1#! /bin/bash
2
3# Send warning email and shut down system when UPS battery is low.
4# Andrew Lorimer, January 2020
5
6echo "Received low battery signal" | systemd-cat -t `basename "$0"`
7
8recipient="andrew"
9
10ctime=`date`
11state=`pwrstat -status`
12model=`echo $state | grep -oP 'Model Name\.+ \K\w+'`
13runtime=`echo $state | grep -oP 'Remaining Runtime\.+ \K\d+\s?\w+(?=\.)?'`
14level=`echo $state | grep -oP 'Battery Capacity\.+ \K\d+'`"%"
15
16echo -e "Battery level is $level (expected runtime $runtime) as of $ctime. Shutting down system in one minute.\n$state" | mail -a "Importance: High" -a "Content-Type: text/plain; charset=UTF-8" -s "⚠️🔋 Battery level $level on $model" $recipient
17sleep 60
18
19echo "Starting system shutdown due to low battery ($level)" | systemd-cat -t `basename "$0"`
20shutdown now