系统日常巡检脚本

系统巡检脚本用于自动化检查服务器或网络设备的运行状态,包括CPU、内存、磁盘、网络等关键指标。

新建脚本check1.sh

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查看巡检报告。