### 超级运维的109个Shell脚本合集概述 本文档汇集了109个实用的Shell脚本案例,旨在帮助系统管理员、运维工程师以及其他IT专业人士提高工作效率,实现自动化运维任务。Shell脚本是Linux及类Unix系统中的重要组成部分,它通过一系列的命令来完成特定的任务,从而简化了日常运维工作。 ### Dos攻击防范脚本详解 #### 脚本功能 该脚本用于检测并自动屏蔽针对Nginx服务器的Dos攻击IP地址,有效地防止因恶意攻击导致的服务不可用。 #### 核心逻辑 1. **读取Nginx日志**:通过`tail`命令获取最新的5000条日志记录,并结合`date`命令过滤出特定日期的日志。 2. **统计IP访问频率**:利用`awk`工具对过滤后的日志进行处理,统计每个IP的出现次数。 3. **筛选异常IP**:设置阈值(访问次数超过10次),将频繁访问的IP地址视为可疑IP。 4. **屏蔽异常IP**:对于识别出的异常IP,使用`iptables`命令将其加入黑名单,阻止其后续访问。 5. **记录操作日志**:将每次屏蔽的操作记录到日志文件中,便于后续审计。 #### 关键命令解析 - `tail -n5000 $LOG_FILE`:获取最近的5000条日志记录。 - `grep $DATE`:过滤出指定日期的日志。 - `awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}'`:统计IP出现次数,并找出超过10次访问的IP。 - `iptables -I INPUT -s $IP -j DROP`:在iptables规则列表中添加一条规则,拒绝特定IP的所有入站连接。 - `echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log`:记录屏蔽操作的时间戳和被屏蔽的IP。 ### Linux系统发送告警脚本 #### 脚本功能 此脚本用于监控Linux系统,并在出现异常时通过邮件方式发送告警通知。 #### 核心逻辑 1. **配置邮件客户端**:使用`mailx`工具作为邮件客户端,并配置发件人邮箱、SMTP服务器等信息。 2. **触发条件**:根据实际需求设定触发告警的条件,如CPU利用率过高、磁盘空间不足等。 3. **发送邮件**:一旦触发条件满足,即发送告警邮件给预设的收件人。 #### 关键命令解析 - `yum install mailx`:安装`mailx`邮件客户端。 - `vi /etc/mail.rc`:编辑邮件配置文件。 - `set from=<邮箱地址>`:设置发件人邮箱地址。 - `set smtp=<SMTP服务器地址>`:设置SMTP服务器地址。 - `set smtp-auth-user=<用户名>`:设置SMTP认证用户名。 - `set smtp-auth-password=<密码>`:设置SMTP认证密码。 - `set smtp-auth=login`:设置使用登录方式进行SMTP认证。 ### MySQL数据库备份脚本 #### 单循环备份 - **脚本功能**:备份MySQL数据库中的所有数据库到单一的SQL文件中。 - **关键命令解析** - `mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null`:列出所有数据库名称,忽略错误输出。 - `mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null`:备份单个数据库到指定文件,忽略错误输出。 #### 多循环备份 - **脚本功能**:分别备份MySQL数据库中的每个数据库及其所有表到单独的文件夹和文件中。 - **关键命令解析** - `mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null`:列出当前数据库中的所有表名,忽略错误输出。 - `mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null`:备份单个表到指定文件,忽略错误输出。 ### Nginx访问日志按天切割脚本 #### 脚本功能 该脚本用于自动按天切割Nginx的访问日志文件,确保日志文件不会过大而影响性能。 #### 核心逻辑 1. **获取当前日期**:使用`date`命令获取当前日期。 2. **创建备份目录**:为当天的日志备份创建相应的文件夹。 3. **重命名日志文件**:将当前日志文件重命名为包含日期的信息,并移动至备份目录中。 #### 关键命令解析 - `date +%F_%H-%M-%S`:获取当前日期时间格式为年月日_小时-分钟-秒。 - `[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null`:检查备份目录是否存在,不存在则创建之,忽略输出。 ### 总结 以上脚本涵盖了常见的运维任务,如安全防护、日志管理、数据备份等。通过对这些脚本的学习和实践,可以极大地提升运维效率,减轻运维人员的工作负担。同时,这些脚本也为运维自动化提供了良好的基础,有助于构建更加强大、稳定的系统环境。
剩余88页未读,继续阅读
- 粉丝: 140
- 资源: 1339
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Java 的 Chef 食谱.zip
- Simulink仿真快速入门与实践基础教程
- js-leetcode题解之179-largest-number.js
- js-leetcode题解之174-dungeon-game.js
- Matlab工具箱使用与实践基础教程
- js-leetcode题解之173-binary-search-tree-iterator.js
- js-leetcode题解之172-factorial-trailing-zeroes.js
- js-leetcode题解之171-excel-sheet-column-number.js
- 安卓开发从入门到精通基础教程
- js-leetcode题解之170-two-sum-iii-data-structure-design.js