55 lines
3.1 KiB
Bash
Executable File
55 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# 过夜链(无人值守):先 Android 全量 P0,再 iOS(**先控制 → 再添加**;因 Android 已加完、iOS 共享账号设备都在)。
|
|
# 1) Android P0:run-p0-all.sh(自带 reset-except 清非白名单 + ADD + CONTROL[BLE+WiFi] + 平台/账号)
|
|
# 2) iOS 控制:SKIP_PROTO_NET=1 → 按当前连接态(BLE+WiFi)控制现有设备(Android 添加后都在)
|
|
# 3) iOS 添加:RESET_FIRST=1 先删非白名单(保留 Lock/Cam/Doorbell/Blind Tilt;keypad 解绑后删)再全量添加
|
|
# 启动: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 全量结束 ====="
|
|
|
|
# iOS 阶段前:**只刷新 iproxy 端口转发**(无需重装 WDA → 不触发授权,过夜无人值守安全)。
|
|
# Android 长跑后端口转发可能掉,刷一下恢复连通。**绝不 kill WDA 进程**(kill 后 start-wda 会 xcodebuild 重装 → 弹授权卡死)。
|
|
log "===== iOS 阶段前:刷新 iproxy 端口转发(不重装 WDA) ====="
|
|
pkill -f "iproxy 8100" 2>/dev/null; sleep 1
|
|
UDID=$(idevice_id -l 2>/dev/null | head -1)
|
|
nohup iproxy 8100 8100 -u "$UDID" >/dev/null 2>&1 &
|
|
sleep 5
|
|
curl -s --max-time 5 http://localhost:8100/status | grep -q '"ready"' && log "WDA 连通正常" || log "WDA 不通(可能需手动重启 WDA;过夜则跳过 iOS)"
|
|
|
|
# 2) iOS 控制(先控制:Android 已加完,iOS 共享账号设备都在,先控制现有设备;需 WDA 在 8100)
|
|
if curl -s --max-time 5 http://localhost:8100/status >/dev/null 2>&1; then
|
|
log "===== iOS 控制开始(先控制:设备由 Android 添加已在) ====="
|
|
bash scripts/run-ios-controls.sh
|
|
log "===== iOS 控制结束 ====="
|
|
|
|
# 3) iOS 添加(RESET_FIRST=1 先删非白名单[keypad 解绑后删] → 再全量添加)——控制跑完再 reset+add 验证添加
|
|
log "===== iOS 添加开始(reset-except 删非白名单 → 添加) ====="
|
|
RESET_FIRST=1 bash scripts/run-ios-adds.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"
|