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 是固定的结束符号
相关推荐
用户31187945592181 小时前
libopenssl-1_0_0-devel-1.0.2p RPM 包安装教程(openSUSE/SLES x86_64)
linux
天航星1 小时前
Docker 安装 Jenkins
java·运维·jenkins
未来之窗软件服务2 小时前
操作系统应用开发(二十四)RustDesk 404错误—东方仙盟筑基期
服务器·远程桌面·仙盟创梦ide·东方仙盟·rustdek
waves浪游2 小时前
Linux基本指令(中)
linux·运维·python
zwhy03112 小时前
TCP服务器设计思路
linux·服务器·网络
荣光波比2 小时前
Docker(三)—— Docker Compose 编排与 Harbor 私有仓库实战指南
运维·docker·容器·云计算
落日漫游2 小时前
DockerCE与cri-docker核心区别解析
运维·docker·kubernetes
-水火-3 小时前
【IDE】Linux下使用openocd烧录bin文件
linux·ide·openocd·bin
YongCheng_Liang3 小时前
Linux 基础命令的 7 大核心模块
linux·运维·服务器
Light603 小时前
领码方案|微服务与SOA的世纪对话(3):方法论新生——DDD、服务网格与AI Ops的融合之道
运维·人工智能·微服务·ddd·soa·服务网格·ai ops