#!/bin/bash

# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[1;37m'
# 어두운 파란 배경에 밝은 노란색 텍스트
HEADER='\033[44m\033[1;93m'
NC='\033[0m' # No Color

# OS 감지
OS_TYPE=$(uname -s)

echo -e "${HEADER}# 시스템 정보 수집 (OS: $OS_TYPE)${NC}"
echo ""

echo -e "${HEADER}# OS 정보${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    sw_vers
    echo "Architecture: $(uname -m)"
else
    cat /etc/os-release
fi
echo ""

echo -e "${HEADER}# 커널 버전${NC}"
uname -r
echo ""

echo -e "${HEADER}# 호스트명${NC}"
hostname
echo ""

echo -e "${HEADER}# 가동 시간${NC}"
uptime
echo ""

echo -e "${HEADER}# CPU 정보${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    echo "Model: $(sysctl -n machdep.cpu.brand_string)"
    echo "Physical CPUs: $(sysctl -n hw.physicalcpu)"
    echo "Logical CPUs: $(sysctl -n hw.logicalcpu)"
    echo "CPU Frequency: $(sysctl -n hw.cpufrequency) Hz"
else
    lscpu | grep -E 'Model name|Socket|Core|Thread|CPU MHz'
fi
echo ""

echo -e "${HEADER}# 메모리 정보${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    total_mem=$(sysctl -n hw.memsize)
    total_gb=$(echo "scale=2; $total_mem / 1024 / 1024 / 1024" | bc)
    echo "Total Memory: ${total_gb} GB"
    echo ""
    vm_stat | perl -ne '/page size of (\d+)/ and $size=$1; /Pages\s+([^:]+)[^\d]+(\d+)/ and printf("%-16s % 16.2f MB\n", "$1:", $2 * $size / 1048576);'
else
    free -h
fi
echo ""

echo -e "${HEADER}# 디스크 사용량${NC}"
df -h
echo ""

echo -e "${HEADER}# 디스크 목록${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    diskutil list
else
    lsblk
fi
echo ""

echo -e "${HEADER}# 네트워크 인터페이스${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    ifconfig | grep -E '^[a-z]|inet '
else
    ip -br addr
fi
echo ""

echo -e "${HEADER}# 라우팅 테이블${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    netstat -rn
else
    ip route
fi
echo ""

echo -e "${HEADER}# DNS 설정${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    scutil --dns | grep 'nameserver\[[0-9]*\]'
else
    cat /etc/resolv.conf
fi
echo ""

echo -e "${HEADER}# 열린 포트${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    netstat -an | grep LISTEN
else
    ss -tulpn 2>/dev/null || netstat -tulpn
fi
echo ""

echo -e "${HEADER}# 로그인 사용자${NC}"
who
echo ""

echo -e "${HEADER}# 실행 중인 프로세스 TOP 10 (CPU)${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    ps aux | sort -nrk 3 | head -11
else
    ps aux --sort=-%cpu | head -11
fi
echo ""

echo -e "${HEADER}# 실행 중인 프로세스 TOP 10 (메모리)${NC}"
if [[ "$OS_TYPE" == "Darwin" ]]; then
    ps aux | sort -nrk 4 | head -11
else
    ps aux --sort=-%mem | head -11
fi
echo ""

echo -e "${HEADER}# 정보 수집 완료${NC}"
