💾 Archived View for gmn.clttr.info › sources › geminispace.git › tree › infra › gemini-health-check.… captured on 2022-01-08 at 21:33:10.

View Raw

More Information

⬅️ Previous capture (2021-12-03)

-=-=-=-=-=-=-

#!/bin/sh

set -e

if [ -z "$1" ] || [ -z "$2" ]; then
    echo "Usage: $0 EMAIL HOSTNAME [PORT] [URL]"
    exit 1
fi

EMAIL="$1"
HOSTNAME="$2"
PORT="$3"
URL="$4"

[ -z "$PORT" ] && PORT=1965
[ -z "$URL" ] && URL="gemini://$HOSTNAME:$PORT/"
[ -z "$FROM_EMAIL" ] && FROM_EMAIL="noreply@$(hostname)"

PREVIOUS_STATE="/var/lib/gemini-health-check/$HOSTNAME"
CURRENT_STATE="/var/lib/gemini-health-check/$HOSTNAME.$"

echo "$URL\r" \
| openssl s_client -servername "$HOSTNAME" -connect "$HOSTNAME:$PORT" -quiet 2>&1 \
| sed -E -e 's,^[0-9]{10\,}:error:,,' \
> "$CURRENT_STATE"

if cmp "$PREVIOUS_STATE" "$CURRENT_STATE" > /dev/null 2>&1; then
    :
else
    (
        echo "Current response from $URL:"
        echo
        sed 's,^,> ,' < "$CURRENT_STATE"
    ) | mail -r "$FROM_EMAIL" -s "$HOSTNAME status changed" "$EMAIL"
fi

mv "$CURRENT_STATE" "$PREVIOUS_STATE"