用shell写一个服务器巡检脚本
时间: 2023-07-01 08:17:38 浏览: 195
服务器巡检脚本可以通过 shell 脚本编写,以下是一个简单的服务器巡检脚本示例:
```bash
#!/bin/bash
# 服务器巡检脚本
# 检查系统负载
load=$(uptime | awk '{print $10}')
if [ $(echo "$load > 1" | bc) -eq 1 ]
then
echo "系统负载过高:$load"
fi
# 检查磁盘空间
disk=$(df -h | grep /dev/sda1 | awk '{print $5}' | cut -d'%' -f1)
if [ $disk -ge 90 ]
then
echo "磁盘空间不足:$disk%"
fi
# 检查内存使用率
mem=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
if [ $(echo "$mem > 80" | bc) -eq 1 ]
then
echo "内存使用率过高:$mem%"
fi
# 检查网络连接数
conn=$(netstat -an | grep :80 | wc -l)
if [ $conn -ge 100 ]
then
echo "网络连接数过多:$conn"
fi
# 检查 CPU 使用率
cpu=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}')
if [ $(echo "$cpu > 80" | bc) -eq 1 ]
then
echo "CPU 使用率过高:$cpu%"
fi
# 检查日志文件大小
log=$(du -sh /var/log/* | sort -hr | head -n 1 | awk '{print $1}')
if [ $(echo "$log > 10" | bc) -eq 1 ]
then
echo "日志文件过大:$log"
fi
# 发送邮件告警
if [ $(echo "$load > 1" | bc) -eq 1 -o $disk -ge 90 -o $(echo "$mem > 80" | bc) -eq 1 -o $conn -ge 100 -o $(echo "$cpu > 80" | bc) -eq 1 -o $(echo "$log > 10" | bc) -eq 1 ]
then
echo "服务器存在异常,发送邮件告警"
# 发送邮件的命令,需要替换成实际使用的邮件服务和账号
echo "服务器存在异常,请及时处理。" | mail -s "服务器巡检告警" user@example.com
fi
```
该脚本会检查系统负载、磁盘空间、内存使用率、网络连接数、CPU 使用率和日志文件大小等指标,如果出现异常,就会发送邮件告警。需要注意的是,邮件发送命令需要替换成实际使用的邮件服务和账号。
该脚本可以通过 crontab 定时执行,例如每天凌晨 3 点执行一次:
```
0 3 * * * /path/to/check_server.sh
```
以上是一个简单的服务器巡检脚本示例,可以根据实际需要进行修改和扩展。
阅读全文