Initial: Mesh-Configs vom 03.09.2026 01:23
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
# /usr/local/bin/duo-agent-poller.sh
|
||||
# Sub-Agent Poller: Prüft alle 10s tasks/offen auf eigene (oder "beliebig") Tasks.
|
||||
# Nutzung: duo-agent-poller.sh <MEINE-ZT-IP> <MEINE-AGENT-ID>
|
||||
set -euo pipefail
|
||||
|
||||
TASKS="/srv/work/tasks"
|
||||
MEINE_IP="${1:?Meine ZT-IP fehlt}"
|
||||
MEINE_ID="${2:?Meine Agent-ID fehlt}"
|
||||
|
||||
# Suffix: letzte 2 Oktette der ZT-IP (z.B. 172.24.34.142 -> "34.142" als Präfix)
|
||||
OCT=$(echo "$MEINE_IP" | awk -F. '{print $3"."$4}')
|
||||
|
||||
for f in "$TASKS/offen"/*.json; do
|
||||
[ -f "$f" ] || continue
|
||||
ZIEL=$(python3 -c "import json;print(json.load(open('$f')).get('ziel_agent',''))" 2>/dev/null || echo "")
|
||||
# Nur Tasks für mich oder "beliebig" greifen
|
||||
if [ "$ZIEL" = "$MEINE_ID" ] || [ "$ZIEL" = "beliebig" ]; then
|
||||
# Atomarer Lock: mv/rename gewinnt, konfliktfrei auf NFS.
|
||||
NEW="$TASKS/in_arbeit/${OCT}_$(basename "$f")"
|
||||
if mv "$f" "$NEW" 2>/dev/null; then
|
||||
python3 - "$NEW" "$MEINE_ID" << 'PYEOF'
|
||||
import json, sys, time
|
||||
f, agent = sys.argv[1], sys.argv[2]
|
||||
t = json.load(open(f))
|
||||
t["status"] = "in_arbeit"
|
||||
t["in_arbeit_ts"] = str(int(time.time()))
|
||||
t["bearbeiter"] = agent
|
||||
json.dump(t, open(f, "w"), indent=2)
|
||||
print(f"Uebernommen: {t['task_id']} von {agent}")
|
||||
PYEOF
|
||||
# Bearbeitungslogik ist agentenspezifisch — hier einhängen.
|
||||
fi
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user