dynamicipupdate
)
bads=()
- if systemctl show -p SubState --value ${services[@]} | egrep -v '^(running|)$' &>/dev/null; then
+ if systemctl show -p SubState --value ${services[@]} | grep -E -v '^(running|)$' &>/dev/null; then
for s in ${services[@]}; do
if [[ $(systemctl show -p SubState --value $s 2>&1) != running ]]; then
bads+=($s)
prometheus
)
bads=()
- if systemctl show -p SubState --value ${services[@]} | egrep -v '^(running|)$' &>/dev/null; then
+ if systemctl show -p SubState --value ${services[@]} | grep -E -v '^(running|)$' &>/dev/null; then
for s in ${services[@]}; do
if [[ $(systemctl show -p SubState --value $s 2>&1) != running ]]; then
bads+=($s)
# this is for tracking dns over tls issue, which
# fixvpndns() in brc2 fixes.
stat=$(resolvectl dnsovertls tunfsf 2>/dev/null ||: )
- read _ _ _ istls <<<"$stat"
+ read -r _ _ _ istls <<<"$stat"
case $istls in
no) : ;;
*)
fi
p $var_mail_msg | loday -1 var_mail
- # early in install process, we dont have permission yet for exiqgrep.
- # 1100 helps allow for system restarts
- qlen=$(/usr/sbin/exiqgrep -o 1100 -c -b | awk '{print $1}') ||:
+ # Note, early in install process, we dont have permission yet for exiqgrep.
+ #
+ # todo: don't do this every 15 seconds, more like once every 2 minutes to
+ # save cpu cycles.
+ #
+ # 2400 = 40 mins. This should allow for system restarts, and
+ # 30 minute message delay plus 10 minute queu runs.
+ qlen=$(/usr/sbin/exiqgrep -o 2400 -c -b | awk '{print $1}') ||:
qmsg=
if ((qlen)); then
- qmsg="queue length $qlen"
- chars+=("q $qlen")
+ # Do sending of long delayed messages, and dont count them in our queue warnings.
+ for mid in $(exiqgrep -o 2400 -zi); do
+ if exim -Mvh $mid | awk 'tolower($2) == "fdate:"' | grep -q .; then
+ qlen=$(( qlen - 1 ))
+ 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);
+ nsenter -t $pid -n -m /usr/sbin/exim4 -C /etc/exim4/my.conf -M $mid
+ else
+ /usr/sbin/exim4 -M $mid
+ fi
+ fi
+ fi
+ done
+
+ if ((qlen)); then
+ qmsg="queue length $qlen"
+ chars+=("q $qlen")
+ fi
fi
case $HOSTNAME in
# No point in emailing about the mailq on a host where we don't
fi
fi
}
+
+# This prevents me having to mute notifications when I'm going to bed.
+mute() {
+ local locked
+ export DISPLAY=:0
+ locked=false
+ if lock_info=$(xscreensaver-command -time); then
+ if [[ $lock_info != *non-blanked* ]]; then
+ locked=true
+ fi
+ else
+ locked=true
+ fi
+ midnight=$(date -d 00:00 +%s)
+ mdiff=$(( EPOCHSECONDS - midnight ))
+ if $locked && (( mdiff < 6 || mdiff > 21 )); then
+ case $(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') in
+ no)
+ # for log purposes
+ echo unmuted
+ pactl set-sink-mute @DEFAULT_SINK@ true
+ ;;
+ esac
+ fi
+ if ! $locked && (( mdiff > 6 || mdiff < 12 )) && [[ ! -e /tmp/ianknap ]]; then
+ case $(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') in
+ yes)
+ # for log purposes
+ echo muted
+ pactl set-sink-mute @DEFAULT_SINK@ false
+ ;;
+ esac
+ fi
+}
+
# use this if we want to do something just once per minute
first_chars=()
-
write-status
if [[ $1 ]]; then
cat $status_file
sleep $wait
write-status
+ mute
done
}