生产环境超实用Shell脚本三
Shell
脚本作为自动化运维的利器,在生产环境中扮演着至关重要的角色。
本文将介绍安全加固脚本、数据同步脚本、数据库备份脚本、网站监控脚本、日志分析脚本等的应用场景,并提供相应的示例代码。
1. 安全加固脚本
- 功能: 加强系统安全配置,例如禁用
root
登录、修改SSH端口、配置防火墙等。 - 应用场景: 提高系统安全性,防止恶意攻击。
- 示例代码:
#!/bin/bash
# 禁用root登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 修改SSH端口
sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
# 配置防火墙
ufw allow 2222/tcp
ufw deny 22/tcp
ufw enable
# 重启SSH服务
systemctl restart sshd
echo "安全加固完成!"
2. 数据同步脚本
- 功能: 将数据从一个服务器同步到另一个服务器。
- 应用场景: 实现数据备份、数据迁移、负载均衡等。
- 示例代码:
#!/bin/bash
# 定义源目录和目标目录
src_dir="/data"
dst_dir="user@backup.example.com:/backup"
# 使用rsync同步数据
rsync -avz --delete $src_dir $dst_dir
echo "数据同步完成!"
3. 数据库备份脚本
- 功能: 定期备份数据库,并压缩存储。
- 应用场景: 防止数据库数据丢失,确保数据安全。
- 示例代码:
#!/bin/bash
# 定义数据库信息和备份目录
db_user="root"
db_password="password"
db_name="mydatabase"
backup_dir="/backup"
# 创建备份目录
mkdir -p $backup_dir
# 备份数据库
mysqldump -u$db_user -p$db_password $db_name | gzip > $backup_dir/$db_name_$(date +%Y%m%d).sql.gz
echo "数据库备份完成!"
4. 网站监控脚本
- 功能: 监控网站可用性、响应时间、状态码等,并发送告警通知。
- 应用场景: 实时监控网站运行状态,及时发现和处理故障。
- 示例代码:
#!/bin/bash
# 定义网站URL和监控频率
website="https://www.example.com"
interval=60
# 循环监控网站
while true; do
# 获取网站状态码和响应时间
response=$(curl -o /dev/null -s -w "%{http_code}\n%{time_total}\n" $website)
status_code=$(echo "$response" | head -n 1)
response_time=$(echo "$response" | tail -n 1)
# 判断状态码是否正常
if [ $status_code -ne 200 ]; then
echo "网站不可用!状态码: $status_code" | mail -s "网站监控告警" admin@example.com
fi
# 判断响应时间是否超时
if [ $(echo "$response_time > 2" | bc) -eq 1 ]; then
echo "网站响应时间过长!响应时间: $response_time 秒" | mail -s "网站监控告警" admin@example.com
fi
# 等待指定时间后继续监控
sleep $interval
done
5. 日志分析脚本
- 功能: 分析日志文件,提取关键信息,生成统计报告。
- 应用场景: 分析网站访问日志、系统日志、应用程序日志等,发现潜在问题。
- 示例代码:
#!/bin/bash
# 定义日志文件和分析结果输出文件
log_file="/var/log/nginx/access.log"
output_file="log_analysis.txt"
# 统计访问量最多的IP地址
awk '{print $1}' $log_file | sort | uniq -c | sort -nr | head -n 10 > $output_file
# 统计访问量最多的URL
awk '{print $7}' $log_file | sort | uniq -c | sort -nr | head -n 10 >> $output_file
# 统计HTTP状态码分布
awk '{print $9}' $log_file | sort | uniq -c | sort -nr >> $output_file
echo "日志分析完成!"
总结
本文介绍了生产环境中实用的Shell
脚本,包括安全加固脚本、数据同步脚本、数据库备份脚本、网站监控脚本和日志分析脚本。
这些脚本可以帮助提高系统安全性、实现数据备份和迁移、监控网站运行状态以及分析日志文件。
通过使用这些脚本,可以自动化运维任务,提高工作效率,确保生产环境的稳定运行。
– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。