9 个实用的 Shell 脚本

9 个实用的 Shell 脚本

💡 原文中文,约5600字,阅读约需14分钟。
📝

内容提要

文章分享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%时输出警告信息。

🏷️

标签

➡️

继续阅读