#!/usr/bin/env bash
set -e
URL="https://www.cloudflare.com"
if [ "$1" = "--url" ] && [ -n "$2" ]; then URL="$2"; fi
OS="$(uname -sr)"
UP="$(uptime -p 2>/dev/null || true)"
CPU_CORES="$(command -v nproc >/dev/null 2>&1 && nproc || grep -c ^processor /proc/cpuinfo 2>/dev/null || echo 1)"
LOAD="$(cat /proc/loadavg 2>/dev/null | awk '{print $1" "$2" "$3}' || uptime | awk -F'load average: ' '{print $2}')"
MEM_RAW="$(free -m 2>/dev/null | awk '/^Mem:/{print $2" "$3" "$4}')"
MEM_TOTAL="$(echo "$MEM_RAW" | awk '{print $1}')"
MEM_USED="$(echo "$MEM_RAW" | awk '{print $2}')"
MEM_FREE="$(echo "$MEM_RAW" | awk '{print $3}')"
DISK_RAW="$(df -h / 2>/dev/null | awk 'NR==2{print $2" "$3" "$4" "$5}')"
DISK_SIZE="$(echo "$DISK_RAW" | awk '{print $1}')"
DISK_USED="$(echo "$DISK_RAW" | awk '{print $2}')"
DISK_AVAIL="$(echo "$DISK_RAW" | awk '{print $3}')"
DISK_USEP="$(echo "$DISK_RAW" | awk '{print $4}')"
IPV4="$(ip -o -4 addr show scope global 2>/dev/null | awk '{print $4}' | sed 's/\/.*//' | paste -sd, -)"
IPV6="$(ip -o -6 addr show scope global 2>/dev/null | awk '{print $4}' | sed 's/\/.*//' | paste -sd, -)"
GW="$(ip route 2>/dev/null | awk '/default/ {print $3; exit}')"
PUBIP="$(curl -s --max-time 5 https://ifconfig.me 2>/dev/null || curl -s --max-time 5 https://api.ipify.org 2>/dev/null || echo unknown)"
PING8="$(ping -c 4 -w 5 8.8.8.8 2>/dev/null | tail -n2 | tr '\n' ' ')"
PING1="$(ping -c 4 -w 5 1.1.1.1 2>/dev/null | tail -n2 | tr '\n' ' ')"
tcp_check(){ timeout 3 bash -c "</dev/tcp/$1/$2" >/dev/null 2>&1 && echo open || echo closed; }
P22="$(tcp_check 127.0.0.1 22)"
P80="$(tcp_check 127.0.0.1 80)"
P443="$(tcp_check 127.0.0.1 443)"
TTFB_LINE="$(curl -s -o /dev/null -w "connect: %{time_connect}s starttransfer: %{time_starttransfer}s code: %{http_code}" "$URL" 2>/dev/null || echo failed)"
echo "System"
echo "OS: $OS"
echo "Uptime: ${UP:-unknown}"
echo "CPU Cores: $CPU_CORES"
echo "Load Avg: $LOAD"
echo "Memory MB: total=$MEM_TOTAL used=$MEM_USED free=$MEM_FREE"
echo "Disk /: size=$DISK_SIZE used=$DISK_USED avail=$DISK_AVAIL use=$DISK_USEP"
echo "Network"
echo "Private IPv4: ${IPV4:-none}"
echo "Private IPv6: ${IPV6:-none}"
echo "Gateway: ${GW:-unknown}"
echo "Public IP: $PUBIP"
echo "Connectivity"
echo "Ping 8.8.8.8: $PING8"
echo "Ping 1.1.1.1: $PING1"
echo "Local TCP 22: $P22"
echo "Local TCP 80: $P80"
echo "Local TCP 443: $P443"
echo "HTTP TTFB ($URL): $TTFB_LINE"
