🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录
⛳️ 推荐
1. 实现思路
2. 前置准备
3. 完整脚本
4. 关键功能说明
5. 使用方法
6. 进阶优化建议
7. 定时任务配置
1. 实现思路
2. 前置准备
# 生成SSH密钥对(在监控主机执行)
ssh-keygen -t rsa
# 将公钥部署到所有被监控服务器(替换your_username@server_ip)
ssh-copy-id your_username@server_ip
3. 完整脚本
#!/bin/bash
# 配置部分
THRESHOLD=80 # 磁盘使用率报警阈值
SERVER_LIST=("server1" "server2" "192.168.1.100") # 服务器列表
LOG_FILE="/var/log/disk_monitor.log" # 日志文件路径
EMAIL="admin@example.com" # 报警通知邮箱
# 检查磁盘函数
check_disk() {
local server=$1
# SSH连接超时设置为5秒
ssh -o ConnectTimeout=5 $server <<'EOF' 2>/dev/null
# 获取磁盘使用率(排除特殊文件系统)
df -P | awk 'NR>1 && $0!~/tmpfs|devtmpfs/ {print $5 " " $6}'
EOF
}
# 主循环
for server in "${SERVER_LIST[@]}"; do
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Checking $server…" >> $LOG_FILE
if ! ping -c 1 -W 1 $server &> /dev/null; then
echo " $server: Network unreachable!" >> $LOG_FILE
continue
fi
result=$(check_disk $server)
if [ -z "$result" ]; then
echo " $server: SSH connection failed!" >> $LOG_FILE
continue
fi
# 处理检查结果
while read -r line; do
usage=${line%%%*} # 提取使用率数值
mount_point=${line#* } # 提取挂载点
if [ $usage -ge $THRESHOLD ]; then
alert_msg=" [WARNING] $server: $mount_point usage ${usage}%"
echo "$alert_msg" >> $LOG_FILE
# 发送邮件报警(需要配置mailx)
echo "$alert_msg" | mail -s "Disk Alert: $server" $EMAIL
fi
done <<< "$result"
done
4. 关键功能说明
- 网络不可达检测
- SSH连接失败处理
- 空结果检测
5. 使用方法
6. 进阶优化建议
( check_disk $server >> /tmp/$$_$server.tmp ) &
done
wait
7. 定时任务配置
# 每天检查3次(编辑crontab)
crontab -e
# 添加如下内容:
0 */8 * * * /path/to/disk_monitor.sh
注意事项:
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
评论前必须登录!
注册