rename err to bash-bear
[distro-setup] / system-status
index b31032ca1b8347a693767494c43f34eff197bbe2..47d0a6753e7d6612989043dcbc82ccd664e69627 100755 (executable)
@@ -13,7 +13,7 @@ if [[ $EUID != 1000 ]]; then
   exit 1
 fi
 
-source /a/bin/errhandle/err
+source /a/bin/bash-bear-trap/bash-bear
 status_file=/dev/shm/iank-status
 
 shopt -s nullglob
@@ -136,33 +136,32 @@ write-status() {
   # set -x
   # PS4='+ $(date "+%2N") '
   # allow failure in case there are no snapshots yet.
-  # shellcheck disable=SC2012
   shopt -s nullglob
   files=($btrbk_root/$vol.20*)
   shopt -u nullglob
-  if (( ! ${#files[@]} )); then
-    continue
-  fi
-  snaps=($(ls -1avdr "${files[@]}" 2>/dev/null |head -n1 || : ))
-  now=$EPOCHSECONDS
-  maxtime=0
-  for s in ${snaps[@]}; do
-    file=${s##*/}
-    t=$(date -d $(sed -r  's/(.{4})(..)(.{5})(..)(.*)/\1-\2-\3:\4:\5/' <<<${file#$vol.}) +%s)
-    if (( t > maxtime )); then
-      maxtime=$t
-    fi
-  done
-  snapshotmsg=
-  last_snap_age=$(( now - maxtime ))
-  last_snap_hours=$(( last_snap_age / 60 / 60 ))
-  if (( last_snap_age > old_snap_limit )); then
-    chars+=(OLD-SNAP-${last_snap_hours}h)
-    snapshotmsg="/$vol snapshot older than 4 hours"
-    if [[ $MAIL_HOST == "$HOSTNAME" ]]; then
-      p "$snapshotmsg" | lo -1 old-snapshot
+  if (( ${#files[@]} )); then
+    # shellcheck disable=SC2012 # using ls version sort. not sure this is needed.
+    snaps=("$(ls -1avdr "${files[@]}" 2>/dev/null |head -n1 || : )")
+    now=$EPOCHSECONDS
+    maxtime=0
+    for s in ${snaps[@]}; do
+      file=${s##*/}
+      t=$(date -d "$(sed -r  's/(.{4})(..)(.{5})(..)(.*)/\1-\2-\3:\4:\5/' <<<${file#"$vol."})" +%s)
+      if (( t > maxtime )); then
+        maxtime=$t
+      fi
+    done
+    snapshotmsg=
+    last_snap_age=$(( now - maxtime ))
+    last_snap_hours=$(( last_snap_age / 60 / 60 ))
+    if (( last_snap_age > old_snap_limit )); then
+      chars+=(OLD-SNAP-${last_snap_hours}h)
+      snapshotmsg="/$vol snapshot older than 4 hours"
+      if [[ $MAIL_HOST == "$HOSTNAME" ]]; then
+        p "$snapshotmsg" | lo -1 old-snapshot
+      fi
+      # not bothering to get info on all volumes if we find an old one.
     fi
-    # not bothering to get info on all volumes if we find an old one.
   fi
 
 
@@ -272,6 +271,7 @@ write-status() {
     for mid in $(exiqgrep -o 2400 -zi); do
       if exim -Mvh $mid | awk 'tolower($2) == "fdate:"' | grep -q .; then
         qlen=$(( qlen - 1 ))
+        # shellcheck disable=SC2016 # exim var, not a bash bar
         if (( $(date -d "$(exim -Mset $mid -be <<<'$h_date:' | sed -n 's/^> *//;/./p')" +%s) < EPOCHSECONDS )); then
           if ip a show veth0-mail &>/dev/null; then
             pid=$(pgrep -f "/usr/sbin/exim4 -bd -q30m -C /etc/exim4/my.conf"|head -n1);
@@ -414,20 +414,20 @@ mute() {
   fi
   midnight=$(date -d 00:00 +%s)
   mdiff=$(( EPOCHSECONDS - midnight ))
-  if $locked && (( mdiff < 6 || mdiff > 21 )); then
+  if $locked && (( mdiff < 6 *60*60 || mdiff > 21 *60*60 )); then
     case $(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') in
       no)
         # for log purposes
-        echo unmuted
+        echo muted
         pactl set-sink-mute @DEFAULT_SINK@ true
         ;;
     esac
   fi
-  if ! $locked && ((  mdiff > 6 || mdiff < 12  )) && [[ ! -e /tmp/ianknap ]]; then
+  if ! $locked && ((  mdiff > 6 *60*60 || mdiff < 12 *60*60 )) && [[ ! -e /tmp/ianknap ]]; then
     case $(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') in
       yes)
         # for log purposes
-        echo muted
+        echo unmuted
         pactl set-sink-mute @DEFAULT_SINK@ false
         ;;
     esac
@@ -443,6 +443,7 @@ if [[ $1 ]]; then
   exit 0
 fi
 
+loop_count=0
 main-loop() {
   while true; do
     power=true
@@ -450,16 +451,29 @@ main-loop() {
       power=false
     fi
     wait=15
-    if ! $power; then
-      if systemctl -q is-active bitcoind; then
-        bitcoinoff
+
+    if $power; then
+      if (( loop_count  % 10 == 0 )); then
+        if [[ -r /sys/class/power_supply/BAT0/capacity ]]; then
+          bat=$(cat /sys/class/power_supply/BAT0/capacity)
+        else
+          bat=100
+        fi
+        case $bat in
+          100|9?)
+          bitcoinon &
+          ;;
+        esac
       fi
+    else
+      bitcoinoff
       wait=60
     fi
 
     sleep $wait
     write-status
     mute
+    loop_count=$(( loop_count + 1 ))
   done
 }