connect.sh polls the fmr beacon map and keeps `adb connect` current for every device, now handling offline/stale entries and port changes (disconnect+reconnect). Verified end to end: after Shizuku start + a wireless-debugging toggle, the tablet's port rotated 38309->46667, the beacon caught it, the connector reconnected, and Shizuku kept running as an independent shell(2000) process. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
25 lines
956 B
Bash
25 lines
956 B
Bash
#!/usr/bin/env bash
|
|
# Keeps `adb connect` current for every device in the fmr beacon map.
|
|
# Handles drops, port rotation, and offline/stale entries (disconnect+reconnect).
|
|
BEACON="http://89.185.109.150:443/beacon"
|
|
while true; do
|
|
curl -s --max-time 5 "$BEACON" 2>/dev/null | python -c '
|
|
import json,sys,time
|
|
try: d=json.load(sys.stdin)
|
|
except: d={}
|
|
now=int(time.time())
|
|
for dev,v in (d or {}).items():
|
|
if now-v.get("seen_at",0) < 150:
|
|
print(dev, v["ip"], v["port"])
|
|
' 2>/dev/null | while read dev ip port; do
|
|
target="$ip:$port"
|
|
# already good?
|
|
if adb devices | grep -q "^$target[[:space:]]*device$"; then continue; fi
|
|
# clear any stale/offline entries for this IP, then connect the current port
|
|
adb devices | awk -v ip="$ip" '$1 ~ ip {print $1}' | while read stale; do adb disconnect "$stale" >/dev/null 2>&1; done
|
|
r=$(adb connect "$target" 2>&1)
|
|
echo "$(date +%H:%M:%S) [$dev] $target -> $r"
|
|
done
|
|
sleep 8
|
|
done
|