#!/bin/bash # 安全巡检脚本部署脚本 # 用法: ./deploy.sh [-s] [-t] [-i 60] [-h] # -s: 安装为定时任务 (crontab) # -t: 指定扫描频率 (分钟), 默认60 # -h: 显示帮助 set -e INSTALL_DIR="/usr/local/security-audit" SCRIPT_NAME="security_audit.sh" REPORTS_DIR="/var/log/security-audit" CRONTAB_ENTRY="" SCHEDULE=60 INSTALL_CRON=false # 显示帮助 show_help() { echo "安全巡检脚本部署脚本" echo "" echo "用法: $0 [选项]" echo "" echo "选项:" echo " -s 安装为定时任务 (crontab)" echo " -t MINUTE 设置扫描频率 (分钟), 默认60" echo " -h 显示帮助" echo "" echo "示例:" echo " ./deploy.sh # 仅安装脚本" echo " ./deploy.sh -s # 安装脚本并设为定时任务" echo " ./deploy.sh -s -t 120 # 安装脚本,每120分钟扫描一次" } # 解析参数 while getopts "s:t:h"; do case $OPTARG in s) INSTALL_CRON=true ;; t) SCHEDULE=$OPTARG ;; h) show_help; exit 0 ;; *) show_help; exit 1 ;; esac done # 检查root权限 if [ "$EUID" -ne 0 ]; then echo "错误: 请使用root权限运行此脚本" exit 1 fi echo "开始部署安全巡检脚本..." # 创建目录 mkdir -p "$INSTALL_DIR" mkdir -p "$REPORTS_DIR" # 复制脚本 cp "$SCRIPT_NAME" "$INSTALL_DIR/" chmod +x "$INSTALL_DIR/$SCRIPT_NAME" echo "✓ 脚本已安装到: $INSTALL_DIR/$SCRIPT_NAME" # 设置报告目录权限 chmod 750 "$REPORTS_DIR" chown root:root "$REPORTS_DIR" 2>/dev/null || true echo "✓ 报告目录: $REPORTS_DIR" # 配置定时任务 if [ "$INSTALL_CRON" = true ]; then CRONTAB_ENTRY="0 */$((SCHEDULE/60)) * * * /usr/bin/bash $INSTALL_DIR/$SCRIPT_NAME -o $REPORTS_DIR/security_audit_report_\$(date +\\%Y\\%m\\%d_\\%H\\%M\\%S).txt >/dev/null 2>&1" # 清除旧的定时任务 crontab -l 2>/dev/null | grep -v "security_audit" > /tmp/crontab.tmp cat /tmp/crontab.tmp | crontab - rm -f /tmp/crontab.tmp # 添加新的定时任务 (crontab -l 2>/dev/null; echo "$CRONTAB_ENTRY") | crontab - echo "✓ 定时任务已配置: 每 $SCHEDULE 分钟执行一次" echo " 定时任务详情: $CRONTAB_ENTRY" fi echo "" echo "部署完成!" echo "==========================================" echo "脚本位置: $INSTALL_DIR/$SCRIPT_NAME" echo "报告目录: $REPORTS_DIR" echo "" echo "使用方法:" echo " ./security_audit.sh # 执行巡检" echo " ./security_audit.sh -o report.txt # 指定报告文件" echo " ./security_audit.sh -q # 静默模式" echo "==========================================" echo "" # 立即执行一次检查 echo "正在执行首次安全巡检..." bash "$INSTALL_DIR/$SCRIPT_NAME"