#!/bin/sh export VOERBOOS RETVAL=0;export RETVAL CNOW="$(cat /sys/class/power_supply/BAT0/charge_now)" CFUL="$(cat /sys/class/power_supply/BAT0/charge_full)" BATVAL="$(echo "scale=0;$CNOW*100/$CFUL"|bc -l)";export BATVAL unset CNOW CFUL BATSTATE="$(cat /sys/class/power_supply/BAT0/status)";export BATSTATE BATFILE="/tmp/batman.sd";export BATFILE export OPTCNT=0 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" LMSG="Battery charged at $BATVAL% with status \"$BATSTATE\", no shutdown." logger -p"info" -t"batman" "$LMSG"||RETVAL=$(("$RETVAL"+$?)) unset LMSG [ -e "$BATFILE" ]&&/usr/sbin/shutdown -c >/dev/null 2>&1&&rm "$BATFILE" SDCRV="$?" case "$SDCRV" in 0) logger -p"info" -t"batman" "Shutdown cancelled.";; *) LMSG="batman" "$BATFILE exists but couldn't cancel shutdown!" logger -p"warn" -t"$LMSG" unset LMSG 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 SMSG="Battery low and discharging, powering down. (batman)" /usr/sbin/shutdown -P +2 "$SMSG"&&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 } batarang() { MSG="$BATVAL% ($BATSTATE)";echo "$MSG"; } while getopts :vnp SHOPT;do case "$SHOPT" in v)VOERBOOS=1;export VOERBOOS;OPTCNT=$((OPTCNT+1));; p)batmobile;OPTCNT=$((OPTCNT+1));; n)batarang;OPTCNT=$((OPTCNT+1));; *) echo "Not supported option: -""${OPTARG}" >&2 RETVAL=$((RETVAL+1));WRONGOPT=1 ;OPTCNT=$((OPTCNT+1)) ;; esac done shift $((OPTIND-1)) [ "$OPTCNT" -le 0 ]&&batarang [ ! -z "$WRONGOPT" ]&&[ "$WRONGOPT" -eq 1 ]&&exit 1;true exit "$RETVAL"