blob: 5b873d7b687cafccdd056d56bb3513a534d4a4dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#!/bin/sh
declare -x VOERBOOS
RETVAL=0;export RETVAL
BATVAL="$(echo "scale=0;$(cat /sys/class/power_supply/BAT0/charge_now)*100/$(cat /sys/class/power_supply/BAT0/charge_full)"|bc -l)";export BATVAL
BATSTATE="`cat /sys/class/power_supply/BAT0/status`";export BATSTATE
BATFILE="/tmp/batman.sd";export BATFILE
export OPTCNT=0
function batmobile {
if [ "$BATVAL" -le 5 ];then
case "$BATSTATE" in
"Charging")
MSG="Battery charged at $BATVAL% with status \"$BATSTATE\", no shutdown."
[ ! -z "$VOERBOOS" ]&&[ "$VOERBOOS" -eq 1 ]&&echo "$MSG"||true
logger -p"info" -t"batman" "Battery charged at $BATVAL% with status \"$BATSTATE\", no shutdown."||RETVAL=$(("$RETVAL"+$?))
[ -e "$BATFILE" ]&&/usr/sbin/shutdown -c >/dev/null 2>&1&&rm "$BATFILE"
SDCRV="$?"
case "$SDCRV" in
0) logger -p"info" -t"batman" "Shutdown cancelled.";;
*)
logger -p"warn" -t"batman" "$BATFILE exists but couldn't cancel shutdown!"
RETVAL=$(("$RETVAL"+"$SDCRV"))
;;
esac
;;
*)
MSG="Battery charged at $BATVAL%, powering down."
[ ! -z "$VOERBOOS" ]&&[ "$VOERBOOS" -eq 1 ]&&echo "$MSG"||true
logger -pwarn -t"batman" "$MSG"||RETVAL=$(("$RETVAL"+$?))
if [ ! -e "$BATFILE" ];then
/usr/sbin/shutdown -P +2 "Battery low and discharging, powering down. (batman)"&&touch "$BATFILE"||RETVAL=$(("$RETVAL"+$?))
fi
;;
esac
else
MSG="Battery charged at $BATVAL%, no shutdown."
[ ! -z "$VOERBOOS" ]&&[ "$VOERBOOS" -eq 1 ]&&echo "$MSG"||logger -p"info" -t"batman" "$MSG"||RETVAL=$(("$RETVAL"+$?))
fi
}
function batarang {
MSG="$BATVAL% ($BATSTATE)";echo "$MSG";
}
while getopts :vnp SHOPT;do
case "$SHOPT" in
v)VOERBOOS=1;export VOERBOOS;((OPTCNT++));;
p)batmobile;((OPTCNT++));;
""|n)batarang;((OPTCNT++));;
*)echo "Not supported option: -""${OPTARG}" >&2;RETVAL=$(($RETVAL+1)) >&2;WRONGOPT=1;((OPTCNT++));;
esac
done
shift $(( $OPTIND - 1 ))
[ "$OPTCNT" -le 0 ]&&batarang
[ ! -z "$WRONGOPT" ]&&[ "$WRONGOPT" -eq 1 ]&&exit 1||true
exit "$RETVAL"
|