linux登陆硬件检测脚本

即拿即用,各种文本各种较为难懂的字段,已注解

bash 复制代码
#!/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 是固定的结束符号
相关推荐
凡人叶枫12 分钟前
Effective C++ 条款24:若所有参数皆须要类型转换,请为此采用 non-member 函数
linux·前端·c++·算法·嵌入式开发
零陵上将军_xdr15 分钟前
Shell流程控制:if/case/for/while让脚本活起来
linux·运维·服务器
坤昱22 分钟前
cfs调度类深入解刨——pelt细节篇
linux·linux内核·cfs调度·eevdf·cfs调度类深入解刨·pelt·pelt细节篇
故渊at38 分钟前
第十二板块:Android 系统启动与初始化 | 第二十九篇:Init 进程、RC 脚本与属性服务(Property Service)
android·linux·内存映射·权限控制·init进程·rc脚本·属性服务
志栋智能40 分钟前
从云端到边缘:无处不在的超自动化巡检需求
运维·自动化
某林2121 小时前
ROS2 并行编译死锁与 Linux 后台声卡/提权踩坑实录:大型轮足机器人架构复盘
linux·架构·机器人·iassc
无足鸟ICT1 小时前
【RHCA+】末行模式
linux
拼搏的小浣熊1 小时前
【通用教程】Windows\+Linux\+银河麒麟系统 固定静态IP地址|解决打印机扫描IP变动、网络掉线问题
linux·网络·windows·麒麟·固定ip·麒麟系统·统信系统
小生不才yz1 小时前
Shell脚本精读 · S02-02 | 转义、续行与注释
linux
dust_and_stars1 小时前
Streamlit vs Gradio 完整对比
服务器·python