back to scripts

lanky-admin-check.sh

bash 50 lines secrets redacted

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"

back to scripts