apt update
apt install mailutils -y
在安装
mailutils的过程中,同时会自动安装Postfix,在弹出的配置页面中选择No configuraiton
apt install ssmtp
vim /etc/ssmtp/ssmtp.conf
----------------------------------
# 添加以下内容
root=username@163.com
mailhub=smtp.163.com:465
AuthUser=username@163.com
AuthPass=xxxxxxxx # 这个密码不是邮箱的密码,而是网易邮箱的授权码
UseTLS=Yes
----------------------------------
vim /etc/ssmtp/revaliases
----------------------------------
# 添加以下语句
root:username@163.com:smtp.163.com:465 # root是当前用户名
----------------------------------
echo "test" | mail -s "test" xxxxxxx@qq.com
#!/bin/bash
# 设置CPU占用率阈值(如80%)
THRESHOLD=80
# 设置接收报警的多个邮箱地址(用逗号分隔)
EMAILS="xxxxxxx@163.com,xxxxxxx@qq.com"
# 获取当前时间
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
# 获取CPU当前的总占用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
echo "$CURRENT_TIME - 当前CPU使用率:$CPU_USAGE%"
# 判断CPU使用率是否超过阈值
if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "$CURRENT_TIME - CPU 使用率超过阈值($THRESHOLD%),当前使用率:$CPU_USAGE%" | mail -s "CPU 使用率报警" $EMAILS
echo "$CURRENT_TIME - 报警邮件已发送至 $EMAILS"
fi
添加执行权限
chmod +x cpu_monitor.sh
配置crontab,每分钟执行一次
* * * * * /path/cpu_monitor.sh >> /path/cpu_monitor.log 2>&1
#!/bin/bash
# 设置内存使用率阈值(如9%)
MEMORY_THRESHOLD=90
# 设置接收报警的多个邮箱地址(用逗号分隔)
EMAILS="xxxxxxx@163.com"
# 获取当前时间
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
# 获取内存的总占用率
MEMORY_USAGE=$(free | grep Mem | awk '{printf("%.2f"), $3/$2 * 100.0}')
echo "$CURRENT_TIME - 当前内存使用率:$MEMORY_USAGE%"
# 判断内存使用率是否超过阈值
if (( $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc -l) )); then
echo "$CURRENT_TIME - 内存使用率超过阈值($MEMORY_THRESHOLD%),当前使用率:$MEMORY_USAGE%" | mail -s "内存使用率报警" $EMAILS
echo "$CURRENT_TIME - 内存报警邮件已发送至 $EMAILS"
fi
添加执行权限
chmod +x memory_monitor.sh配置crontab,每5分钟执行一次
*/5 * * * * /path/memory_monitor.sh >> /path/memory_monitor.log 2>&1#!/bin/bash
# 设置磁盘空间使用率阈值(如90%)
DISK_THRESHOLD=95
# 设置接收报警的多个邮箱地址(用逗号分隔)
EMAILS="xxxxxxxxxxxx@163.com"
# 设置需要监控的磁盘分区,例如"/"
DISK_PARTITION="/"
# 获取当前时间
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
# 获取指定分区的磁盘使用率
DISK_USAGE=$(df -h "$DISK_PARTITION" | awk 'NR==2 {print $5}' | sed 's/%//')
echo "$CURRENT_TIME - $DISK_PARTITION 分区当前使用率:$DISK_USAGE%"
# 判断磁盘使用率是否超过阈值
if (( DISK_USAGE > DISK_THRESHOLD )); then
echo "$CURRENT_TIME - $DISK_PARTITION 分区使用率超过阈值($DISK_THRESHOLD%),当前使用率:$DISK_USAGE%" | mail -s "磁盘空间使用率报警" $EMAILS
echo "$CURRENT_TIME - 磁盘空间报警邮件已发送至 $EMAILS"
fi
添加执行权限
chmod +x disk_monitor.sh配置crontab,每小时执行一次
0 * * * * /path/disk_monitor.sh >> /path/disk_monitor.log 2>&1