上一篇
在运维工作中,CentOS日志分析脚本是排查系统问题、监控安全事件和优化性能的重要工具。对于刚接触Linux的新手来说,日志文件看起来可能杂乱无章,但通过编写简单的脚本,我们可以快速提取关键信息,实现自动化日志分析。
在开始写脚本前,先了解CentOS中常用的日志文件:
/var/log/messages:系统全局日志,记录内核、服务等通用信息/var/log/secure:SSH登录、认证相关日志/var/log/cron:定时任务日志/var/log/dmesg:内核环形缓冲区消息/var/log/yum.log:YUM包管理器操作日志下面我们将创建一个简单的Bash脚本,用于分析最近1小时内SSH失败登录尝试次数,这是Linux系统日志中最常见的安全监控需求之一。
sudo nano /usr/local/bin/ssh_fail_check.sh #!/bin/bash# CentOS SSH失败登录分析脚本# 功能:统计最近1小时内的SSH失败登录次数LOG_FILE="/var/log/secure"ONE_HOUR_AGO=$(date -d "1 hour ago" +"%b %d %H:%M")CURRENT_TIME=$(date +"%b %d %H:%M")# 使用awk和grep组合提取最近1小时的Failed password记录FAIL_COUNT=$(awk -v start="$ONE_HOUR_AGO" -v end="$CURRENT_TIME" 'BEGIN { split(start, s_arr, " "); split(end, e_arr, " ");}{ log_time = $1 " " $2 " " $3; if (log_time >= start && log_time <= end) { print $0; }}' "$LOG_FILE" | grep "Failed password" | wc -l)# 输出结果echo "[INFO] $(date): 最近1小时内SSH失败登录次数: $FAIL_COUNT"# 如果失败次数超过10次,输出警告if [ $FAIL_COUNT -gt 10 ]; then echo "[WARNING] 检测到异常登录尝试!请检查系统安全。"fi chmod +x /usr/local/bin/ssh_fail_check.sh/usr/local/bin/ssh_fail_check.sh 为了让脚本定期运行,我们可以使用cron定时任务。例如,每小时执行一次:
# 编辑当前用户的cron任务sudo crontab -e# 添加以下行(每小时整点执行)0 * * * * /usr/local/bin/ssh_fail_check.sh >> /var/log/ssh_monitor.log 2>&1 除了SSH监控,你还可以用类似方法分析其他日志:
grep -i "error" /var/log/messagesdf -h 和日志记录/var/log/messages 中的 segfault 或 killed 信息通过本文,你已经掌握了如何编写一个基础的CentOS日志分析脚本,并学会了将其集成到定时任务中实现日志监控工具的功能。随着经验积累,你可以扩展脚本功能,比如发送邮件告警、生成可视化报告等,真正实现自动化日志分析。
提示:在生产环境中使用前,请务必在测试环境充分验证脚本逻辑,避免对系统造成意外影响。
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122859.html