Files
bf-infra/docs/tp25-runde.sh
Christoph Emsenhuber 6aa24977da Eine Runde per Ein-Befehl -- und das gruene Licht log
docs/tp25-runde.sh startet Konsole und Messung zusammen, friert die AP-Karte
ein, sagt die vom Interface GELESENE Adresse fuers Telefon an und loest beim
Beenden den Pin. Grund: beide Einzelteile hatten als Standard-Laufverzeichnis
einen Pfad in ein Sitzungs-Scratchpad -- wer sie ohne die passende
Umgebungsvariable startete, mass in ein totes Verzeichnis und merkte es erst
bei der Auswertung.

Der Probelauf hat dabei sofort einen Fehler in der eigenen Anzeige aufgedeckt:
die Seite meldete "✅ beide angemeldet, auf verschiedenen APs", waehrend beide
Telefone auf ap2 hingen. Das Kriterium prueft "beide angemeldet" -- nicht, ob
sie auf VERSCHIEDENEN APs sitzen. Das ist ein gruenes Licht fuer einen
Messpunkt, den es nicht gibt: Piep, weitergehen, kein Gegen-AP gemessen.
Wieder dieselbe Klasse wie der 14-h-Ausfall -- Anzeige geprueft statt Wirkung.

Jetzt vier Zustaende, gegen sechs Faelle geprueft (inkl. "gleicher AP, anderes
Band" -> zaehlt NICHT):
  bereit           verschiedene APs        -> Piep, weitergehen
  wird nachgezogen gleicher AP, Automatik  -> warten
  kein Gegen-AP    gleicher AP, ohne Auto  -> Warnung statt gruen
  S22 sucht        S22 nicht angemeldet    -> stehenbleiben

teilprojekte.md: Passwort-Rotation als offener Follow-up eingetragen (User:
"machen wir, aber erst spaeter") -- inkl. der noch offenen sshpass -p in
tp6-monitor-core.sh und tp25-pin-s22.sh, die vorher nachgezogen gehoeren.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 20:49:13 +02:00

68 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# TP25 — eine komplette Runde. Ein Befehl, ohne Claude.
#
# bash docs/tp25-runde.sh # Verzeichnis wird nach Datum/Uhrzeit benannt
# bash docs/tp25-runde.sh ap2-hoehe # eigener Name
#
# Startet die Klick-Konsole (Port 3031) und die Messung, sagt die Adresse fuer das Telefon
# an und raeumt beim Beenden auf. Zum Beenden: Ctrl-C in diesem Fenster.
#
# 🔴 Der Grund fuer dieses Skript: die beiden Einzelteile hatten als Standard-Laufverzeichnis
# einen Pfad in ein Sitzungs-Scratchpad. Wer sie ohne die passende Umgebungsvariable
# startete, mass in ein totes Verzeichnis -- und merkte es erst bei der Auswertung.
# Hier wird das Verzeichnis EINMAL bestimmt und an beide durchgereicht.
set -uo pipefail
HERE="$(cd "$(dirname "$0")/.." && pwd)"
cd "$HERE"
NAME="${1:-$(date +%Y%m%d-%H%M)}"
export TP6_RUN_DIR="$HERE/docs/messdaten/tp25-runde-$NAME"
export TP25_PHONE_IP="${TP25_PHONE_IP:-10.40.10.178}" # S22 -- wird gepingt
export TP25_PHONE_MAC="${TP25_PHONE_MAC:-2A:0D:B0:5D:AD:A7}"
export TP25_IPHONE_MAC="${TP25_IPHONE_MAC:-F2:62:4C:E1:AF:09}"
mkdir -p "$TP6_RUN_DIR"
# Konsole: nur starten, wenn der Port frei ist -- eine zweite Instanz wuerde sofort sterben
# und die Marker der ersten waeren weg.
KONSOLE=""
if lsof -nP -iTCP:3031 -sTCP:LISTEN >/dev/null 2>&1; then
echo "Konsole laeuft bereits auf 3031 -- wird weiterverwendet."
else
python3 docs/tp6-marker/server.py > "$TP6_RUN_DIR/konsole.log" 2>&1 &
KONSOLE=$!
sleep 2
fi
echo
echo "════════════════════════════════════════════════════════════"
echo " Konsole am Telefon oeffnen:"
# 🔴 Adresse vom Interface lesen, nicht hartkodieren (Fehler vom 2026-08-22: die angesagte
# IP gehoerte einem Geraet, das seit 22 h nicht mehr im Netz war).
ifconfig | awk '/^[a-z0-9]+:/{i=substr($1,1,length($1)-1)}
/inet /{if ($2 !~ /^127\.|^169\.254\./) printf " http://%s:3031/ (%s)\n", $2, i}'
echo
echo " 1) Auf dem Telefon einmal irgendwo tippen -> schaltet den Signalton frei"
echo " 2) '🔁 Gegen-AP automatisch' einschalten -> S22 folgt dem iPhone spiegelverkehrt"
echo " 3) Losgehen. Doppelton = beide angemeldet -> Raum antippen, weiter"
echo
echo " Lauf: $TP6_RUN_DIR"
echo "════════════════════════════════════════════════════════════"
echo
aufraeumen() {
echo
echo "Runde beendet. Aufraeumen …"
bash docs/tp25-pin-s22.sh off >/dev/null 2>&1 && echo " AP-Pin geloest."
[[ -n "$KONSOLE" ]] && kill "$KONSOLE" 2>/dev/null && echo " Konsole beendet."
pkill -f 'sshpass -e ssh.*10.40.99.1' 2>/dev/null
echo
echo "Auswertung:"
echo " python3 docs/tp25-gehweg-auswertung.py --dir $TP6_RUN_DIR"
}
trap aufraeumen EXIT
bash docs/tp25-walk-messung.sh