#!/usr/bin/env bash # ============================================================ # 手动替换加固模板 APK,并立即触发一次加固任务 # # 用法: # ./replace_and_run.sh # 不换 APK,只触发一次加固 # ./replace_and_run.sh /path/to/xxx.apk # 先替换 template,再触发 # ./replace_and_run.sh -n /path/to/xxx.apk # 只替换 template,不触发 # ./replace_and_run.sh -f # 只 follow 日志 # ============================================================ set -euo pipefail JIAGU_HOST=root@139.162.47.194 JIAGU_DIR=/root/JiaguTool TEMPLATE=$JIAGU_DIR/template/hgdj_source.apk LOG=$JIAGU_DIR/auto_jiagu.log NO_RUN=0 FOLLOW_ONLY=0 APK="" while [ $# -gt 0 ]; do case "$1" in -n) NO_RUN=1; shift ;; -f) FOLLOW_ONLY=1; shift ;; -h|--help) sed -n '3,10p' "$0"; exit 0 ;; *) APK="$1"; shift ;; esac done log() { echo "[$(date +'%H:%M:%S')] $*"; } if [ "$FOLLOW_ONLY" -eq 1 ]; then log "→ follow 远端日志(Ctrl+C 退出)" ssh "$JIAGU_HOST" "tail -f $LOG" exit 0 fi # ---------- 替换模板 APK ---------- if [ -n "$APK" ]; then [ ! -f "$APK" ] && { echo "❌ APK 不存在: $APK"; exit 1; } SIZE=$(stat -f%z "$APK" 2>/dev/null || stat -c%s "$APK") log "→ 上传 $(basename $APK) ($SIZE bytes) → $TEMPLATE" scp -C "$APK" "$JIAGU_HOST:$TEMPLATE" ssh "$JIAGU_HOST" "chmod 600 $TEMPLATE && ls -l $TEMPLATE" fi if [ "$NO_RUN" -eq 1 ]; then log "✓ 只替换模板,不触发(-n)" exit 0 fi # ---------- 触发一次加固 ---------- log "→ 远端触发 $JIAGU_DIR/auto_jiagu.sh(约 3 分钟)" log " 实时日志见下方,产物完成后自动退出" # 后台跑 + 实时 follow 日志,脚本结束时 kill follow ssh "$JIAGU_HOST" "nohup $JIAGU_DIR/auto_jiagu.sh >/dev/null 2>&1 &" /dev/null || true break fi done log "→ 拉取最终状态" ssh "$JIAGU_HOST" "bash -c ' echo \"----- S3 最新 5 个包 -----\" aws s3 ls s3://meirenyu/huangguo/ | tail -5 echo \"\" echo \"----- MongoDB link -----\" mongosh \"mongodb://stat_center:v5weEdNvXnJCMr9TeFFm@172.104.52.130:27017,172.104.52.26:27017,172.104.52.242:27017/stat_center?authSource=stat_center&replicaSet=fish0\" --quiet --eval \"print(db.getCollection(\\\"version\\\").findOne({appId:2}).link[0])\" '" log "✅ 完成"