lanky-admin-check.sh
Host admin snapshot — uptime, sessions and posture checks for a quick "is everything sane" read.
Note
Live script from my home-lab server. Tokens, IDs, phone numbers and other secrets have been replaced with
placeholders like
<WHATSAPP_GROUP_ID> — everything else is the real, running code.
#!/usr/bin/env bash
set -u
REPORT_DIR=/home/lanky/reports
mkdir -p "$REPORT_DIR"
TMP=$(mktemp "$REPORT_DIR/lanky-admin-check.XXXXXX")
LATEST="$REPORT_DIR/lanky-admin-check-latest.txt"
{
echo "Lanky Admin Health Check"
echo "Generated: $(date -Is)"
echo "Host: $(hostname)"
echo
echo "== Uptime =="
uptime || true
who -b || true
test -f /var/run/reboot-required && echo "Reboot required: yes" || echo "Reboot required: no"
echo
echo "== Mounts =="
for m in /mnt/nas /mnt/jelly; do
if mountpoint -q "$m"; then
echo "OK: $m mounted"
findmnt -rn --target "$m" || true
else
echo "BAD: $m not mounted"
fi
done
echo
echo "== Disk Space =="
df -hT / /home /mnt/nas /mnt/jelly 2>/dev/null || df -hT || true
echo
echo "== Systemd Failed Units =="
systemctl --failed --no-pager || true
echo
echo "== Docker Summary =="
if systemctl is-active --quiet docker; then
echo "Docker service: active"
else
echo "Docker service: NOT active"
fi
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}' | sort || true
echo
echo "== Docker Problems =="
docker ps -a --filter status=exited --filter status=dead --filter status=restarting --format '{{.Names}}\t{{.Status}}' || true
docker ps --filter health=unhealthy --format '{{.Names}}\t{{.Status}}' || true
echo
echo "== Recent High Priority Journal Entries =="
journalctl -p warning..alert --since '24 hours ago' --no-pager -n 80 || true
} > "$TMP" 2>&1
chmod 0644 "$TMP"
mv "$TMP" "$LATEST"
echo "$LATEST"