- 設置一個白名單列表
- 檢查到登錄用戶IP信息不在白名單,發送信息到指定郵箱
#!/bin/bash
KNOWN_IP_FILE="/path/to/known_ips.txt"
EMAIL_TO="test@163.com"
LOG_FILE="/var/log/monitor_login.log"
if [ ! -f "$KNOWN_IP_FILE" ]; thenecho "$(date) - ERROR: 常用IP地址列表文件 $KNOWN_IP_FILE 不存在。" >> "$LOG_FILE"exit 1
fi
current_login_info=$(who)
if [ -z "$current_login_info" ]; thenecho "$(date) - ERROR: 無法獲取當前登錄信息。" >> "$LOG_FILE"exit 1
fi
current_ips=$(echo "$current_login_info" | awk '{print $5}' | tr -d '()' | sort | uniq)
if [ -z "$current_ips" ]; thenecho "$(date) - INFO: 當前無登錄用戶或無法提取IP地址。" >> "$LOG_FILE"exit 0
fi
for ip in $current_ips; doif ! grep -q "$ip" "$KNOWN_IP_FILE"; thenmail_subject="警報: 檢測到來自IP $ip 的異常登錄"mail_body="檢測到來自IP: $ip 的異常登錄\n\n當前登錄詳細信息:\n$current_login_info"echo "$mail_body" | mail -s "$mail_subject" "$EMAIL_TO"echo "$(date) - ALERT: 發送警報郵件,檢測到來自IP $ip 的異常登錄。" >> "$LOG_FILE"elseecho "$(date) - INFO: 登錄IP $ip 在常用列表中。" >> "$LOG_FILE"fi
done