系统巡检脚本用于自动化检查服务器或网络设备的运行状态,包括CPU、内存、磁盘、网络等关键指标。
bash
#!/bin/bash
# 版本:V1.0
# 作者: andy
# 日期: 2025-8-5
# 功能:服务器巡检脚本
#yum install bc sysstat net-tools lrzsz -y &> /dev/null
# 获取服务器主机名
system_hostname=$(hostname | awk '{print $1}')
# 获取服务器主机IP地址
system_ip=$(ip a | grep "global" | awk '{print $2}' | awk -F "/" '{print $1}')
# 获取服务器系统信息
system=$(grep "^NAME" /etc/os-release | awk -F \" '{print $2}')
# 获取服务器系统版本
version=$(awk '{print $3 $4}' /etc/openEuler-release)\
# 获取总内存信息
mem_total=$(free -m | awk '/Mem/{print $2}')
# 获取已用内存信息
mem_use=$(free -m | awk '/Mem/{print $3}')
# 获取可用内存信息
mem_free=$(free -m | awk '/Mem/{print $4}')
# 获取CPU核心数
cpu_mun=$(grep -c "processor" /proc/cpuinfo)
# 获取CPU使用率
cpu_use=$(top -n 1 -b | awk '/%Cpu/{print $2}')
# 获取系统当前1分钟负载
load_1=$(uptime | awk '{print $8}' | sed -n 's/\,//gp')
# 获取系统当前5分钟负载
load_5=$(uptime | awk '{print $9}' | sed -n 's/\,//gp')
# 获取系统当前15分钟负载
load_15=$(uptime | awk '{print $10}')
# 磁盘I/O
disk_io=$(iostat -d -x -k 1 1 | awk '/sda/{print $1,$14"ms"}')
# 获取磁盘使用率大于50%的信息
disk_lv=$(df -Ph | awk '{if(+$5>10) print "分区:"$1,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"使用率:"$5}')
# 获取磁盘使用信息
disk_fq=$(df -h | grep "root" | awk '{print "分区:"$1}')
disk_to=$(df -Ph | grep "root" | awk '{print "总空间:"$2}')
disk_us=$(df -Ph | grep "root" | awk '{print "使用空间:"$4}')
disk_fe=$(df -Ph | grep "root" | awk '{print "剩余空间:"$4}')
disk_ux=$(df -Ph | grep "root" | awk '{print "磁盘使用率:"$5}')
disk_ux1=$(df -Ph | grep "root" | awk '{print $5}')
# 巡检信息保存路径
path="/root/monitor.txt"
# 内存阈值
mem_mo='50'
# 写入巡检信息到文件
echo -e "######################### " > $path
echo -e "主机名: "$system_hostname >> $path
echo -e "服务器IP: "$system_ip >> $path
echo -e "服务器系统名: "$system >> $path
echo -e "服务器系统版本: "$version >> $path
echo -e "总内存: "$mem_total >> $path
echo -e "已使用内存: "$mem_use >> $path
echo -e "可用内存: "$mem_free >> $path
echo -e "CPU核心数: "$cpu_mun >> $path
echo -e "CPU使用率: "$cpu_use >> $path
echo -e "磁盘I/O: "$disk_io >> $path
if [[ $(echo $disk_ux1 | sed s/%//g) -gt 50 ]]
then
echo $disk_fq >> $path
echo $disk_to >> $path
echo $disk_us >> $path
echo $disk_fq >> $path
echo $disk_ux >> $path
echo "磁盘巡检状态:不正常" >> $path
else
echo $disk_fq >> $path
echo $disk_to >> $path
echo $disk_us >> $path
echo $disk_fq >> $path
echo $disk_ux >> $path
echo "磁盘巡检状态:正常" >> $path
fi
PERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total)))
PERCENT_1=$(echo $PERCENT | sed 's/%//g')
if [[ $PERCENT_1 -gt $mem_mo ]]
then
echo -e "总内存大小: $mem_total MB" >> $path
echo -e "已用内存: $mem_use MB" >> $path
echo -e "内存剩余大小: $mem_free MB" >> $path
echo -e "内存使用率: $PERCENT" >> $path
echo -e "内存巡检状态:不正常" >> $path
else
echo -e "总内存大小: $mem_total MB" >> $path
echo -e "已用内存: $mem_use MB" >> $path
echo -e "内存剩余大小: $mem_free MB" >> $path
echo -e "内存使用率: $PERCENT" >> $path
echo -e "内存巡检状态:正常" >> $path
fi
echo -e "平均1分钟负载:$load_1\n 平均5分钟负载:$load_5\n 平均15分钟负载:$load_15" >> $path
执行脚本
bash
bash check1.sh
查看脚本巡检信息
bash
cat monitor.txt
执行结果

小结:该脚本是一个自动化服务器巡检工具check1.sh,用于监控系统关键指标。它会收集主机名、IP、系统版本等基础信息,检测CPU使用率、内存占用(总内存、已用、剩余)、磁盘I/O和存储空间(对使用率>50%的分区特别标注),并记录系统负载(1/5/15分钟)。检测结果会输出到/root/monitor.txt,包含各指标状态判断(正常/不正常)。通过执行bash check1.sh运行脚本,使用cat monitor.txt查看巡检报告。