apt install -y msmtp msmtp-mta ca-certificates
nano /etc/msmtprc
# 全局默认设置
defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
timeout 10
# SMTP账户信息
account alert
host fusion.mailboxho.st
port 587
from [email protected]
user [email protected]
password YOUR_SMTP_PASSWORD_HERE
# 设为默认账户
account default : alert
进行安全设置(必需)
chmod 600 /etc/msmtprc
chown root:root /etc/msmtprc
测试发送:
echo “msmtp test mail” | msmtp [email protected]
nano /usr/local/bin/ip_monitor.sh
#!/bin/bash
IP="123.123.123.123"
EMAIL="[email protected]"
FAIL_FILE="/tmp/ip_${IP}_fail"
MAX_FAIL=3
SUBJECT="website running stats"
ping -c 2 -W 2 "$IP" >/dev/null 2>&1
RET=$?
if [ $RET -ne 0 ]; then
FAIL_COUNT=$(cat "$FAIL_FILE" 2>/dev/null || echo 0)
FAIL_COUNT=$((FAIL_COUNT + 1))
echo "$FAIL_COUNT" > "$FAIL_FILE"
if [ "$FAIL_COUNT" -eq "$MAX_FAIL" ]; then
{
echo "Subject: $SUBJECT"
echo
echo "⚠️ 服务器不可达"
echo
echo "IP: $IP"
echo "时间: $(date)"
} | msmtp "$EMAIL"
fi
else
if [ -f "$FAIL_FILE" ]; then
{
echo "Subject: $SUBJECT"
echo
echo "✅ 服务器已恢复"
echo
echo "IP: $IP"
echo "时间: $(date)"
} | msmtp "$EMAIL"
rm -f "$FAIL_FILE"
fi
fi
chmod +x /usr/local/bin/ip_monitor.sh
crontab -e
# 以下任意选择一个时点
* * * * /usr/local/bin/ip_monitor.sh #每1分钟运行一次
0 * * * * /usr/local/bin/ip_monitor.sh #每个整点运行一次
30 * * * * /usr/local/bin/ip_monitor.sh #每小时第 30 分钟运行