#!/bin/bash # roambench-worker 安装器: 输一次 RoamBench 密码,之后 worker 常驻自启。 # 用法: bash ~/.local/bin/setup-roambench-worker.sh set -e URL="http://127.0.0.1:3000" USER="ian" TOKEN_FILE="$HOME/.config/roambench/agent-token" SERVICE_DIR="$HOME/.config/systemd/user" SERVICE="$SERVICE_DIR/roambench-worker.service" WORKER="$HOME/.local/bin/roambench-worker" echo "== RoamBench worker 安装 ==" printf 'RoamBench 密码(%s): ' "$USER" read -rs PASSWORD echo COOKIE=$(mktemp) trap 'rm -f "$COOKIE"' EXIT LOGIN=$(curl -s -c "$COOKIE" -X POST "$URL/api/auth/login" \ -H 'Content-Type: application/json' \ -d "{\"username\":\"$USER\",\"password\":\"$PASSWORD\"}") case "$LOGIN" in *authenticated*true*) echo "✓ 登录成功" ;; *) echo "✗ 登录失败: $LOGIN"; exit 1 ;; esac TOKEN=$(curl -s -b "$COOKIE" -X POST "$URL/api/project-control/agent-token" \ | python3 -c 'import json,sys;print(json.load(sys.stdin).get("token",""))') [ -n "$TOKEN" ] || { echo "✗ token 生成失败"; exit 1; } echo "✓ agent token 已获取" mkdir -p "$(dirname "$TOKEN_FILE")" printf '%s' "$TOKEN" > "$TOKEN_FILE" chmod 600 "$TOKEN_FILE" echo "✓ token 已存 $TOKEN_FILE" mkdir -p "$SERVICE_DIR" cat > "$SERVICE" <