#!/bin/bash # 过夜链(无人值守):先 Android 全量 P0,再 iOS(先删非白名单 → 添加 → 控制)。 # 1) Android P0:run-p0-all.sh(自带 reset-except 清非白名单 + ADD + CONTROL[BLE+WiFi] + 平台/账号) # 2) iOS 添加:RESET_FIRST=1 先删非白名单(保留 Lock/Cam/Doorbell/Blind Tilt)再全量添加 # 3) iOS 控制:SKIP_PROTO_NET=1 → 不切 BLE/WiFi,按当前连接态(BLE+WiFi)控制(iOS 无 adb 切网) # 启动:nohup caffeinate -dimsu bash scripts/run-overnight-android-then-ios.sh > reports/overnight-chain.out 2>&1 & set -u cd "$(dirname "$0")/.." log(){ echo "[$(date '+%m-%d %H:%M:%S')] $*"; } # 0) 清空上次报告产物(避免 SOAK .results.json 累计串扰 + 旧 HTML 混淆)。旧 HTML/日志先归档再清。 log "===== 清空上次报告产物 =====" mkdir -p reports/archive ts=$(date '+%Y%m%d-%H%M%S') for f in reports/*.html reports/p0-all.log reports/ios-adds.log reports/ios-controls.log reports/overnight-chain.prev.out; do [ -e "$f" ] && mv "$f" "reports/archive/$(basename "$f" | sed "s/\\(\\.[^.]*\\)$/_$ts\\1/")" 2>/dev/null done rm -f reports/.results.json log "上次报告已归档到 reports/archive/,.results.json 已清空" # 1) Android 全量 P0(等 adb 就绪,最多 30min) log "等待 Android adb 设备就绪..." for i in $(seq 1 30); do if adb devices 2>/dev/null | grep -qE "device$"; then log " adb 设备就绪"; break; fi log " 无 adb 设备,等待 ${i}/30 min..."; sleep 60 done log "===== Android P0 全量开始 =====" bash scripts/run-p0-all.sh log "===== Android P0 全量结束 =====" # 2) iOS 添加(RESET_FIRST=1 先删非白名单;需 WDA 在 8100) if curl -s --max-time 5 http://localhost:8100/status >/dev/null 2>&1; then log "===== iOS 添加开始(先 reset-except 删非白名单) =====" RESET_FIRST=1 bash scripts/run-ios-adds.sh log "===== iOS 添加结束 =====" # 3) iOS 控制(SKIP_PROTO_NET=1,当前连接态控制,不切 BLE/WiFi) log "===== iOS 控制开始 =====" bash scripts/run-ios-controls.sh log "===== iOS 控制结束 =====" else log "!! WDA(8100)不在线,跳过 iOS 阶段(检查 iproxy/WDA)" fi log "全链完成。报告:reports/*P0*.html(Android) + reports/iOSAll_*.html(iOS);日志 reports/p0-all.log / ios-adds.log / ios-controls.log / overnight-chain.out"