Centos主机检查脚本

使用方法:

将脚本保存为 CentOS_syscheck.sh

添加执行权限:

复制代码
chmod +x CentOS_syscheck.sh

执行脚本:

复制代码
./CentOS_syscheck.sh


#!/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 "当前时间     : $(date "+%Y-%m-%d %H:%M:%S")"
    echo "上次启动时间  : $(date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S")"
    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

注意事项:

需要root权限获取完整的网络接口信息

网络速度检测依赖ethtool工具,如果未安装请执行:

复制代码
yum install -y ethtool

如果报错./check.sh: /bin/bash^M: bad interpreter: No such file or directory

通常是因为脚本文件中含有 Windows 风格的换行符(CR LF,即 ^M),而不是 Unix/Linux 系统所需的换行符(LF)。这通常发生在将 Windows 上的脚本文件直接传输到 Linux 系统上时。

复制代码
sed -i 's/\r$//' CentOS_syscheck.sh

也可以使用 Notepad++ 或其他支持 Unix/Linux 样式的换行符的编辑器打开并保存该文件。

在 Notepad++ 中,你可以通过以下步骤转换换行符:

打开文件,点击顶部菜单的 "编辑" -> "EOL 转换" -> "UNIX/OSX 格式"

相关推荐
橘子1314 小时前
Linux网络基础(一)
linux·网络·arm开发
zhangyao94033015 小时前
关于js导入Excel时,Excel的(年/月/日)日期是五位数字的问题。以及对Excel日期存在的错误的分析和处理。
开发语言·javascript·excel
闲人编程15 小时前
Python在网络安全中的应用:编写一个简单的端口扫描器
网络·python·web安全·硬件·端口·codecapsule·扫描器
骑驴看星星a15 小时前
【Three.js--manual script】4.光照
android·开发语言·javascript
星释16 小时前
Rust 练习册 :Leap与日期计算
开发语言·后端·rust
悟能不能悟18 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
Mr_Xuhhh18 小时前
GUI自动化测试--自动化测试的意义和应用场景
python·集成测试
2301_7644413318 小时前
水星热演化核幔耦合数值模拟
python·算法·数学建模
循环过三天18 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
Q_Q51100828519 小时前
python+django/flask的眼科患者随访管理系统 AI智能模型
spring boot·python·django·flask·node.js·php