linux登陆硬件检测脚本
即拿即用,各种文本各种较为难懂的字段,已注解
#!/bin/bash
#作者:pei,创作时间:2025,05,29
#欢迎登录Linux脚本检测系统硬件参数# 获取系统信息
OS_INFO=$(lsb_release -ds 2>/dev/null || cat /etc/*release 2>/dev/null | head -n1)
# "Linux标准基础信息" #2>/dev/null(将错误输出改为空),cat /etc/*release 2>/dev/null(读取发行版本信息将错误输出改为空)
KERNEL=$(uname -r)
# "查询Linux内核版本"
UPTIME=$(uptime -p)
# "查询系统运行时间"
LAST_BOOT=$(who -b | awk '{print $3,$4}')
# "查询系统最后一次登录时间" # 获取CPU信息
CPU_MODEL=$(lscpu | grep 'Model name' | cut -d':' -f2 | sed 's/^ *//')
# "显示 CPU 架构信息" #sed 's/^ *//'(将行首的空格删除)
CPU_CORES=$(lscpu | grep '^CPU(s):' | awk '{print $2}')
# "查询 CPU 核心数量" #筛选以CPU开头的字段
CPU_THREADS=$(lscpu | grep 'Thread(s) per core' | awk '{print $4}')
# "查询每个核心的线程数" #筛选字段关于线程数的英文
CPU_USAGE=$(top -bn1 | awk -F, '/Cpu/{print $4}' | awk '{print 100 - $1"%"}')
# "查询当前 CPU 使用率百分比" #$1(空闲比) #-F,:设置字段分隔符为逗号(,)处理前一步的输出 99.1 id 默认按空格分隔字段: $1 = 99.1(第一个字段)$2 = id(第二个字段)100 - $1:计算使用率(100 - 空闲率)"%":添加百分号 最终输出:0.9%# 获取内存信息
MEM_TOTAL=$(free -h | awk '/Mem:/ {print $2}')
# "men的总计为:"
MEM_USED=$(free -h | awk '/Mem:/ {print $3}')
# "men的空闲空间为:"
MEM_FREE=$(free -h | awk '/Mem:/ {print $4}')
# "men使用共享所占用的·空间为"
MEM_AVAIL=$(free -h | awk '/Mem:/ {print $7}')
# "men可用空间为:"
SWAP_TOTAL=$(free -h | awk '/Swap:/ {print $2}')
# "swap的总计空间为:" # 获取磁盘信息
DISK_ROOT=$(df -h / | awk 'NR==2 {print $4}')
# "根分区 (/) 的可用磁盘空间(剩余空间)为:" #NR==2只处理第二行(跳过标题行)
DISK_HOME=$(df -h ~ | awk 'NR==2 {print $4}')
# "当前用户家目录所在分区的可用磁盘空间(剩余空间):" # 获取网络信息
PUBLIC_IP=$(curl -s ifconfig.me)
LOCAL_IP=$(hostname -I | awk '{print $1}')
GATEWAY=$(ip route | grep default | awk '{print $3}')
#"获取设备的公网、本地、网关为:";
# 获取GPU信息(NVIDIA专用)
GPU_INFO=$(nvidia-smi --query-gpu=gpu_name --format=csv,noheader 2>/dev/null || echo "Not Available")# 显示欢迎信息
echo -e "\n\033[1;34m===== 系统登录信息 [$(date)] =====\033[0m"
echo -e "\033[1;32m用户:\033[0m $(whoami)"
echo -e "\033[1;32m主机名:\033[0m $(hostname)"
echo -e "\033[1;32m系统:\033[0m $OS_INFO"
echo -e "\033[1;32m内核:\033[0m $KERNEL"
echo -e "\033[1;32m运行时间:\033[0m $UPTIME (上次启动: $LAST_BOOT)"# 显示硬件信息
echo -e "\n\033[1;34m===== 硬件参数 =====\033[0m"
echo -e "\033[1;33mCPU:\033[0m $CPU_MODEL"
echo -e " |- 核心: $CPU_CORES 线程: $CPU_THREADS 使用率: $CPU_USAGE"
echo -e "\033[1;33m内存:\033[0m 总量: $MEM_TOTAL | 已用: $MEM_USED | 空闲: $MEM_FREE | 可用: $MEM_AVAIL"
echo -e "\033[1;33m交换:\033[0m $SWAP_TOTAL"
echo -e "\033[1;33m磁盘:\033[0m 根分区剩余: $DISK_ROOT | 家目录剩余: $DISK_HOME"
echo -e "\033[1;33m网络:\033[0m 公网IP: $PUBLIC_IP | 内网IP: $LOCAL_IP | 网关: $GATEWAY"
echo -e "\033[1;33mGPU:\033[0m ${GPU_INFO}"# 安全提示
echo -e "\n\033[1;31m安全提醒:\033[0m"
echo "上次登录记录:"
last -2 $(whoami) | head -n 2 | grep -v "still"echo -e "\n\033[1;35m系统负载:\033[0m $(uptime | awk -F'[a-z]:' '{print $2}')\n"
#\033 是 ESC 字符的八进制表示(ASCII 27)[ 是固定的开始符号 <代码> 是控制文本样式的数字代码 m 是固定的结束符号