这个脚本将包括广泛的系统检测和维护任务。这个脚本会检测系统状态、资源使用、安全状况等,并根据需要提供适当的响应和报告。
高级运维自动化脚本
#!/bin/bash
# 环境设置
CPU_THRESHOLD=50
MEM_THRESHOLD=10
LARGE_FILE_SIZE=100M
PORT_TO_CHECK=(80 443 22) # 检查常用端口
DISK_USAGE_THRESHOLD=90
LOG_DIR="/var/log/maintenance_logs"
mkdir -p $LOG_DIR
LOG_FILE="$LOG_DIR/$(date +%F_%T).log"
# 记录函数
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $@" | tee -a $LOG_FILE
}
# 获取系统信息
OS=$(uname -s)
DISTRO=$(grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"')
VERSION_ID=$(grep 'VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '"')
log "操作系统: $OS"
log "发行版: $DISTRO"
log "版本号: $VERSION_ID"
# 定义根据发行版调整的功能
case $DISTRO in
ubuntu|debian)
FW_CMD="sudo ufw status verbose"
;;
centos|fedora|rhel)
FW_CMD="sudo firewall-cmd --list-all"
;;
*)
log "不支持的发行版"
exit 1
;;
esac
# 函数定义区
check_cpu_usage() {
log "检查CPU使用率高的进程:"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 10 | tee -a $LOG_FILE
}
check_mem_usage() {
log "检查内存使用率高的进程:"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 10 | tee -a $LOG_FILE
}
find_large_files() {
log "检查大文件(超过$LARGE_FILE_SIZE):"
find / -type f -size +$LARGE_FILE_SIZE -exec ls -lh {} \; 2>/dev/null | awk '{ print $9 ": " $5 }' | tee -a $LOG_FILE
}
check_port_usage() {
for port in "${PORT_TO_CHECK[@]}"; do
log "检查端口$port的使用情况:"
netstat -tuln | grep ":$port " && log "端口$port被占用" || log "端口$port未被占用"
done
}
check_disk_usage() {
log "检查磁盘使用率:"
df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output; do
log "$output"
usage=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
if [ $usage -ge $DISK_USAGE_THRESHOLD ]; then
log "磁盘空间使用超过阈值:$output"
fi
done
}
# 执行任务
log "运维自动化检测脚本启动"
check_cpu_usage
check_mem_usage
find_large_files
check_port_usage
check_disk_usage
log "检查防火墙状态:"
$FW_CMD | tee -a $LOG_FILE
log "运维自动化检测完成"
# 清理旧日志文件(保留最近10个日志)
find $LOG_DIR -type f | sort | head -n -10 | xargs rm --
脚本功能说明:
- 日志记录:所有输出都会被记录到日志文件中,方便事后分析和审计。
- 检查任务:包括CPU和内存使用情况检查、大文件搜索、端口占用情况、磁盘使用率及防火墙状态。
- **日志文件管理
**:自动清理旧的日志文件,只保留最近10个。
使用方法:
- 将脚本保存为
system_maintenance_advanced.sh
。 - 赋予执行权限:
chmod +x system_maintenance_advanced.sh
。 - 定时执行或手动运行脚本以进行系统检查和日志记录。
这个脚本为你提供了一个强大的工具,能够自动执行多种系统检查任务,并保持良好的日志记录,帮助你追踪和分析系统状态。