shell自动化运维脚本:Shell自动化运维脚本实战指南
Shell脚本在自动化运维中的重要性
Shell脚本是一种基于命令行的脚本语言,能够将一系列命令组合在一起,按顺序执行,在运维工作中,Shell脚本常用于以下场景:
- 批量管理服务器:自动化部署、配置更新、软件安装等任务。
- 监控系统状态:定期检查服务器资源使用情况、服务状态等。
- 故障处理:自动检测并修复常见问题,减少系统停机时间。
- 日志分析:快速提取和处理日志数据,帮助定位问题。
典型Shell自动化运维脚本案例
案例1:批量检查服务器健康状态
以下脚本用于批量检查多台服务器的网络连通性、磁盘空间和CPU负载。
#!/bin/bash
# 定义服务器列表
servers=("192.168.1.101" "192.168.1.102" "192.168.1.103")
# 遍历服务器列表
for server in "${servers[@]}"; do
echo "Checking server $server..."
# 检查网络连通性
if ping -c 2 $server &> /dev/null; then
echo "$server is reachable."
else
echo "$server is unreachable!" >> /var/log/server_check.log
continue
fi
# 检查磁盘空间
df -h / | awk 'NR==2 {print $5}' >> /tmp/server_disk.log
echo "Disk usage for $server: $(df -h / | awk 'NR==2 {print $5}')"
# 检查CPU负载
uptime | awk -F 'load average:' '{print $2}' | cut -d ',' -f1 >> /tmp/server_load.log
echo "Load average for $server: $(uptime | awk -F 'load average:' '{print $2}' | cut -d ',' -f1)"
done 使用方法:将服务器IP地址添加到数组中,定期执行脚本,结果将保存在日志文件中。

案例2:自动备份数据库
以下脚本用于自动备份MySQL数据库,并将备份文件上传到远程服务器。
#!/bin/bash # 数据库配置 DB_NAME="mydatabase" DB_USER="root" DB_PASSWORD="password" BACKUP_DIR="/backup/mysql" REMOTE_USER="backup_user" REMOTE_HOST="backup-server.example.com" REMOTE_DIR="/backup/mysql" # 创建备份目录 mkdir -p $BACKUP_DIR # 执行备份 mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME_$(date +%Y%m%d).sql # 压缩备份文件 gzip $BACKUP_DIR/$DB_NAME_$(date +%Y%m%d).sql # 上传备份到远程服务器 scp $BACKUP_DIR/$DB_NAME_$(date +%Y%m%d).sql.gz $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR # 删除本地备份(可选) # rm $BACKUP_DIR/$DB_NAME_$(date +%Y%m%d).sql.gz echo "Backup completed for $DB_NAME on $(date)"
使用方法:将脚本设置为定时任务(如cron),每天凌晨执行一次。

案例3:自动清理日志文件
以下脚本用于自动清理超过30天的日志文件,释放磁盘空间。
#!/bin/bash
# 定义日志目录
LOG_DIR="/var/log"
# 遍历日志目录
for log_file in $LOG_DIR/*.log; do
# 检查文件是否存在
if [ -f "$log_file" ]; then
# 获取文件修改时间
modify_time=$(stat -c %Y "$log_file")
current_time=$(date +%s)
# 计算文件年龄(秒)
age=$(( (current_time - modify_time) / 86400 ))
# 如果文件超过30天,删除
if [ $age -gt 30 ]; then
echo "Removing old log file: $log_file"
rm -f "$log_file"
fi
fi
done 使用方法:将脚本设置为定时任务,每周运行一次。
Shell脚本的最佳实践
- 错误处理:使用
set -e让脚本在遇到错误时立即退出,避免继续执行错误命令。 - 输入验证:对脚本的输入参数进行验证,防止意外行为。
- 日志记录:将脚本执行过程中的关键信息记录到日志文件中,便于排查问题。
- 模块化设计:将复杂的脚本拆分为多个函数或子脚本,提高可读性和可维护性。
- 版本控制:将脚本纳入版本控制系统(如Git),便于管理和协作。
相关文章:
文章已关闭评论!










