编写一个Linux脚本来查找日志文件中在过去一小时内发生的错误,并发送邮件。
#!/bin/bash
# 设置日志文件路径
log_file="/path/to/log/file.log"
# 设置错误日志文件路径
error_log_file="/path/to/error/log/file.log"
# 设置发送邮件的收件人
recipient="recipient@example.com"
# 获取当前时间和一小时前的时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
one_hour_ago=$(date -d "1 hour ago" +"%Y-%m-%d %H:%M:%S")
# 查找在过去一小时内发生的错误
errors=$(grep "ERROR" "$log_file" | awk -v start="$one_hour_ago" -v end="$current_time" '$0 > start && $0 < end')
# 如果有错误,则将错误信息写入错误日志文件
if [ -n "$errors" ]; then
echo "$errors" >> "$error_log_file"
fi
# 如果错误日志文件不为空,则发送邮件
if [ -s "$error_log_file" ]; then
# 设置邮件主题和正文
subject="Error Log Report"
body="Please find the attached error log file."
# 发送邮件
echo "$body" | mail -s "$subject" -a "$error_log_file" "$recipient"
# 清空错误日志文件
> "$error_log_file"
fi
这个脚本会首先设置日志文件路径和错误日志文件路径,然后获取当前时间和一小时前的时间。接下来,它会使用grep命令查找在过去一小时内发生的错误,并使用awk命令过滤出符合时间范围的错误信息。如果找到了错误,它会将错误信息写入错误日志文件。最后,如果错误日志文件不为空,它会发送包含错误日志文件附件的邮件,并清空错误日志文件。
这个脚本可以通过设置定时任务(例如使用crontab)来定期执行,以便及时检测并发送错误日志。
领取专属 10元无门槛券
手把手带您无忧上云