lots: shellcheck, streaming stuff, fixes
[distro-setup] / system-status
index 3ac05d579dba88874ea5c1603a6641e107b0b09f..f9b0eee9a964e715dbda918d1323e57fd1902791 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
@@ -389,6 +389,23 @@ write-status() {
     # leave it up to epanic-clean to send email notification
   fi
 
+  mprom=/var/lib/prometheus/node-exporter/mailtest-check.prom
+  if [[ -s $mprom ]]; then
+    if grep -qE 'mailtest_check_(unexpected|missing).*[^ ][^0]$' $mprom; then
+      chars+=("MTEST_SPAM")
+    fi
+    mtest_found=false
+    # shellcheck disable=SC2013 # these are words
+    for t in $(grep -E ^mailtest_check_last_usec $mprom | awk '{print $NF}'); do
+      if (( t + 60 * 20 < EPOCHSECONDS )); then
+        mtest_found=true
+      fi
+    done
+    if $mtest_found; then
+      chars+=("MTEST_AGE")
+    fi
+  fi
+
   if [[ ! -e $status_file || -w $status_file ]]; then
     if [[ -e /a/bin/bash_unpublished/source-state ]]; then
       cat /a/bin/bash_unpublished/source-state >$status_file
@@ -414,20 +431,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 +460,7 @@ if [[ $1 ]]; then
   exit 0
 fi
 
+loop_count=0
 main-loop() {
   while true; do
     power=true
@@ -450,16 +468,30 @@ 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
 }