#!/bin/bash set -eE -o pipefail trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR if [[ $EUID != 1000 ]]; then echo "$0: error run as normal user" >&2 exit 1 fi cd /m/md/l/testignore/new shopt -s nullglob # we run this cronjob along with sending the test email every 10 # minutes, so give it 2 minutes to arrive, then if there is an email at # least 23 minutes old, the last 2 test emails have failed. if [[ ! $1 && $- != *i* ]]; then sleep 120 fi last_sec=0 for file in *; do if [[ $file -nt $latest ]]; then latest=$file fi done if [[ $latest ]]; then last_sec=$(awk '/^Subject: / {print $3}' $latest) fi now=$(date +%s) limit=$(( now - 60 * 23 )) if (( last_sec <= limit )); then echo $HOSTNAME mailtest failure touch /nocow/user/mailtest-failure else rm -f /nocow/user/mailtest-failure fi find . -type f -mtime +1 -delete