#!/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