一般ユーザの一覧
ユーザーID(UID)の範囲で絞り込みます。一般的なLinux(Ubuntu, RHELなど)では、一般ユーザーのUIDは 1000 以上(CentOS 6以前などは 500 以上)に設定されます。最後に column -t をパイプで繋いであげると、自動で幅を計算して完璧な表形式(整列されたカラム)にしてくれます。
awk -F: 'BEGIN {print "USER_NAME\tUID\tHOME_DIR\tSHELL"} $3 >= 1000 && $3 != 65534 {print $1 "\t" $3 "\t" $6 "\t" $7}' /etc/passwd | column -t -s $'\t'
OSのバージョンを調べる
cat /etc/os-release
grep -E '^(PRETTY_NAME|ID_LIKE)=' /etc/os-release
ハードウェアスペックを調べる
echo "--- Hardware Spec ---"
lscpu | grep 'Model name' | sed 's/Model name:\s*//'
lscpu | grep -E '^Core\(s\) per socket:|^Socket\(s\):' | awk -F: '{gsub(/^[ \t]+|[ \t]+$/, "", $2); if($1 ~ /Core\(s\) per socket/) c=$2; if($1 ~ /Socket\(s\)/) s=$2} END {print "Physical Cores: " c*s}'
lscpu | grep '^CPU(s):' | awk '{print "Threads: " $2}'
if command -v nvidia-smi &> /dev/null; then gpu_name=$(nvidia-smi --query-gpu=name --format=csv,noheader); vram_mib=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits); echo "${gpu_name} ($((vram_mib / 1024)) GB)"; elif command -v rocm-smi &> /dev/null; then gpu_name=$(lscpu | grep 'Model name' | grep -o 'Radeon [A-Z0-9]*'); vram_gb=$(( $(rocm-smi --showmeminfo vram | grep 'VRAM Total' | head -n 1 | awk '{print $NF}') / 1024 / 1024 / 1024 )); echo "${gpu_name} (${vram_gb} GB)"; elif [ -f /proc/fb ]; then cat /proc/fb | awk '{print $2}'; else echo "No GPU detected"; fi
if [ -f /proc/meminfo ]; then echo "RAM: $(( $(grep 'MemTotal' /proc/meminfo | awk '{print $2}') / 1024 / 1024 )) GiB"; else echo "RAM: unknown"; fi
echo "---------------------"
ネットワークを調べる
echo "--- Network Configuration ---"
MAIN_IFACE=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $5}' || ip route show | grep default | awk '{print $5}' | head -n 1)
if [ -n "$MAIN_IFACE" ]; then
echo "Interface: $MAIN_IFACE"
echo "IP Address: $(ip addr show $MAIN_IFACE | grep 'inet ' | awk '{print $2}' | head -n 1)"
echo "MAC Address: $(ip link show $MAIN_IFACE | grep 'link/ether' | awk '{print $2}')"
echo "Gateway: $(ip route show | grep default | awk '{print $3}' | head -n 1)"
else
echo "Interface: Not Found"
fi
ストレージ(Disk)を調べる
echo "--- Disk Space ---" df -h -t ext4 -t xfs -t btrfs -t vfat -t ntfs 2>/dev/null || df -h | grep -E '^/dev/'
まとめて出力
echo "=== Linux Server Information Report ==="
echo ""
echo "--- OS & Kernel ---"
if [ -f /etc/os-release ]; then
echo "OS/Distro: $(grep '^PRETTY_NAME=' /etc/os-release | cut -d= -f2 | tr -d '"')"
else
echo "OS/Distro: Unknown"
fi
echo "Kernel: $(uname -r)"
echo "Arch: $(uname -m)"
echo "Boot Mode: $(uname -v | awk '{print $1, $2}')"
echo ""
echo "--- Hardware Spec ---"
lscpu | grep 'Model name' | sed 's/Model name:\s*//' | awk '{print "CPU: " $0}'
lscpu | grep -E '^Core\(s\) per socket:|^Socket\(s\):' | awk -F: '{gsub(/^[ \t]+|[ \t]+$/, "", $2); if($1 ~ /Core\(s\) per socket/) c=$2; if($1 ~ /Socket\(s\)/) s=$2} END {print "Cores: " c*s " Cores"}'
lscpu | grep '^CPU(s):' | awk '{print "Threads: " $2 " Threads"}'
# GPU情報の詳細化(Driver/CUDAバージョンを追加)
if command -v nvidia-smi &> /dev/null; then
gpu_name=$(nvidia-smi --query-gpu=name --format=csv,noheader)
vram_mib=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits)
nv_driver=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader)
cuda_ver=$(nvidia-smi | grep -o 'CUDA Version: [0-9.]*' | awk '{print $3}')
echo "GPU: ${gpu_name} ($((vram_mib / 1024)) GB)"
echo "GPU Driver: NVIDIA $nv_driver (CUDA $cuda_ver)"
elif command -v rocm-smi &> /dev/null; then
gpu_name=$(lscpu | grep 'Model name' | grep -o 'Radeon [A-Z0-9]*')
vram_gb=$(( $(rocm-smi --showmeminfo vram | grep 'VRAM Total' | head -n 1 | awk '{print $NF}') / 1024 / 1024 / 1024 ))
echo "GPU: ${gpu_name} (${vram_gb} GB)"
if command -v hipconfig &> /dev/null; then
echo "ROCm/HIP: $(hipconfig --version)"
fi
elif [ -f /proc/fb ]; then
echo "GPU: $(cat /proc/fb | awk '{print $2}')"
else
echo "GPU: No GPU detected"
fi
if [ -f /proc/meminfo ]; then
echo "System RAM: $(( $(grep 'MemTotal' /proc/meminfo | awk '{print $2}') / 1024 / 1024 )) GiB"
else
echo "System RAM: Unknown"
fi
echo ""
echo "--- Network Configuration ---"
MAIN_IFACE=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $5}' || ip route show | grep default | awk '{print $5}' | head -n 1)
if [ -n "$MAIN_IFACE" ]; then
echo "Interface: $MAIN_IFACE"
echo "IP Address: $(ip addr show $MAIN_IFACE | grep 'inet ' | awk '{print $2}' | head -n 1)"
echo "MAC Address: $(ip link show $MAIN_IFACE | grep 'link/ether' | awk '{print $2}')"
echo "Gateway: $(ip route show | grep default | awk '{print $3}' | head -n 1)"
else
echo "Interface: Not Found"
fi
echo ""
echo "--- Disk Space ---"
df -h -t ext4 -t xfs -t btrfs -t vfat -t ntfs 2>/dev/null || df -h | grep -E '^/dev/|^Filesystem'
echo "======================================="
