内容提要
文章分享9个实用Shell脚本,涵盖防范DoS攻击并自动封禁异常IP、发送告警邮件、MySQL单库及多库备份、Nginx日志按天切割与分析、查看网卡实时流量、服务器系统初始化配置,以及批量监控100台服务器磁盘利用率。作者提醒脚本未经测试,使用前需自行验证。
延伸解读
脚本使用前的必要验证
作者明确提醒这些脚本未经测试,直接在生产环境使用可能引发意外。例如,DoS 防范脚本会直接修改 iptables 规则,若阈值设置不当可能误封正常 IP;备份脚本中的数据库密码以明文存储,存在安全风险。建议先在测试环境验证逻辑,并根据实际环境调整参数,如日志路径、IP 阈值、备份目录等。
自动化运维的典型场景覆盖
这 9 个脚本覆盖了安全防护、监控告警、数据备份、日志管理、性能查看和系统初始化等常见运维任务。其中,Nginx 日志切割与分析、MySQL 备份、网卡流量监控等脚本可直接用于日常维护,而系统初始化脚本则适合新服务器批量部署。读者可参考其思路,结合自身需求组合或扩展。
脚本中的安全与配置注意事项
部分脚本涉及敏感操作,如发送告警邮件需配置邮箱密码,备份脚本包含数据库凭证,系统初始化脚本会禁用 SELinux 和防火墙、禁止 root 远程登录。这些改动可能影响服务器安全性,需评估后再应用。此外,监控磁盘利用率的脚本依赖 SSH 免密和 host.info 文件,需提前配置。
Q&A
如何用Shell脚本自动防范DoS攻击并封禁异常IP?
脚本通过分析Nginx访问日志,统计最近5000行中当前分钟的IP访问次数,若超过10次则视为异常IP,使用iptables封禁并记录到/tmp/drop_ip.log。
Shell脚本如何实现MySQL数据库的单库备份?
脚本先获取所有数据库列表(排除系统库),然后循环对每个数据库使用mysqldump进行备份,备份文件以数据库名和日期时间命名,若备份失败则输出错误信息。
Nginx访问日志按天切割的Shell脚本怎么写?
脚本将前一天的日志文件移动到以月份命名的目录中,并重命名为包含日期的文件,然后发送USR1信号给Nginx进程重新打开日志文件。
如何用Shell脚本分析Nginx访问日志中的高频IP和页面?
脚本使用awk统计访问日志,输出访问最多的10个IP(包括UV)、指定时间段内访问最多的IP、访问最多的10个页面(PV)以及页面状态码的数量。
服务器系统初始化配置的Shell脚本做了哪些优化?
脚本设置时区同步、禁用SELinux和防火墙、显示历史命令时间、设置SSH超时、禁止root远程登录、禁止定时任务邮件、调整文件打开数、优化内核参数、减少Swap使用并安装性能分析工具。
如何批量监控100台服务器的磁盘利用率?
脚本从host.info文件读取服务器IP、用户和端口,通过SSH执行df -h命令,解析磁盘使用率,当使用率超过80%时输出警告信息。