#!/bin/bash
# 设置颜色变量RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[0;33m'BLUE='\033[0;34m'NC='\033[0m' # 重置颜色
# 生成分隔线separator() { echo -e "${BLUE}=======================================================${NC}"}
# 系统基本信息检查system_info() { echo -e "\n${GREEN}>>> 系统基本信息检查${NC}" separator echo "主机名 : $(hostname)" echo "操作系统版本 : $(cat /etc/redhat-release)" echo "内核版本 : $(uname -r)" echo "系统运行时间 : $(uptime | awk -F, '{print $1}')"}
# CPU检查cpu_check() { echo -e "\n${GREEN}>>> CPU检查${NC}" separator echo "CPU型号 : $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)" echo "物理核心数 : $(lscpu | grep 'Core(s)' | head -1 | awk '{print $4}')" echo "逻辑核心数 : $(nproc)" echo "当前负载 : $(uptime | awk -F 'average:' '{print $2}')"}
# 内存检查memory_check() { echo -e "\n${GREEN}>>> 内存检查${NC}" separator free -h | awk ' /Mem/{ print "总内存 : " $2 print "已用内存 : " $3 print "可用内存 : " $7 } /Swap/{ print "交换分区 : " $2 print "已用交换 : " $3 }'}
# 硬盘检查disk_check() { echo -e "\n${GREEN}>>> 硬盘检查${NC}" separator df -h | awk ' BEGIN { print "挂载点\t\t总大小\t已用\t可用\t使用率" } /^\/dev/ { printf "%-15s %-6s %-6s %-6s %-4s\n", $6, $2, $3, $4, $5 }' | column -t}
# 网卡检查network_check() { echo -e "\n${GREEN}>>> 网络接口检查${NC}" separator for interface in $(ip -o link show | awk -F': ' '{print $2}' | grep -v lo); do echo "接口名称 : $interface" echo "IP地址 : $(ip -o -4 addr show $interface | awk '{print $4}')" echo "MAC地址 : $(ip link show $interface | awk '/link\/ether/ {print $2}')" echo "连接速度 : $(ethtool $interface 2>/dev/null | grep Speed | awk '{print $2}')" echo "连接状态 : $(ip link show $interface | grep -o 'state [A-Z]*' | awk '{print $2}')" separator done}
# 主函数main() { clear echo -e "\n${YELLOW}====== 开始系统检查 ======${NC}"
system_info cpu_check memory_check disk_check network_check
echo -e "\n${YELLOW}====== 检查完成 ======${NC}"}
# 执行主函数main
使用方法:
将脚本保存为 system_check.sh
添加执行权限:
chmod +x system_check.sh
执行脚本:
./system_check.sh
功能说明:
系统基本信息:显示主机名、操作系统版本、内核版本和运行时间
CPU信息:显示型号、物理核心数、逻辑核心数和当前负载
内存信息:显示总内存、已用内存、可用内存和交换分区状态
硬盘信息:显示所有挂载点的磁盘使用情况(自动过滤系统伪设备)
网络接口:显示所有物理网卡的IP、MAC地址、连接速度和状态
注意事项:
需要root权限获取完整的网络接口信息
网络速度检测依赖ethtool工具,如果未安装请执行:
yum install -y ethtool
通常是因为脚本文件中含有 Windows 风格的换行符(CR LF,即^M),而不是 Unix/Linux 系统所需的换行符(LF)。这通常发生在将 Windows 上的脚本文件直接传输到 Linux 系统上时。
sed -i 's/\r$//' system_check.sh
也可以使用 Notepad++ 或其他支持 Unix/Linux 样式的换行符的编辑器打开并保存该文件。在 Notepad++ 中,你可以通过以下步骤转换换行符:打开文件,点击顶部菜单的 “编辑” -> “EOL 转换” -> “UNIX/OSX 格式”
领取专属 10元无门槛券
私享最新 技术干货