#!/bin/bash # CMD Agent 安装脚本 # 在 CI Runner 宿主机上安装 CMD Agent 服务 set -e echo "=== 主机信息 ===" echo "主机名: $(hostname)" echo "IP: $(hostname -I 2>/dev/null || ip addr show | grep 'inet ' | awk '{print $2}' | tr '\n' ' ')" echo "用户: $(whoami)" echo "Runner 名称: ${RUNNER_NAME:-unknown}" # 检查是否已安装 if [ -f /opt/xiaoxia-cmd-agent/server.py ] && systemctl is-active xiaoxia-cmd-agent &>/dev/null; then echo "CMD Agent 已安装且运行中,跳过安装" systemctl status xiaoxia-cmd-agent --no-pager exit 0 fi SUDO="" [ "$(id -u)" != "0" ] && SUDO="sudo" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SERVER_PY="$SCRIPT_DIR/../infra/cmd-agent/server.py" if [ ! -f "$SERVER_PY" ]; then echo "ERROR: 找不到 server.py: $SERVER_PY" exit 1 fi echo "=== 开始安装 CMD Agent ===" # 创建目录 $SUDO mkdir -p /opt/xiaoxia-cmd-agent $SUDO cp "$SERVER_PY" /opt/xiaoxia-cmd-agent/server.py $SUDO chmod +x /opt/xiaoxia-cmd-agent/server.py # 生成 token TOKEN="xsa-$(openssl rand -hex 16)" echo "TOKEN: $TOKEN" echo "$TOKEN" | $SUDO tee /etc/xiaoxia-cmd-agent.token > /dev/null $SUDO chmod 600 /etc/xiaoxia-cmd-agent.token # 修改监听地址为 0.0.0.0(新服务器需要远程访问) $SUDO sed -i 's/("127.0.0.1", LISTEN_PORT)/("0.0.0.0", LISTEN_PORT)/' /opt/xiaoxia-cmd-agent/server.py # 创建 installed flag echo "1" | $SUDO tee /etc/xiaoxia-cmd-agent.installed > /dev/null # 创建 systemd service $SUDO tee /etc/systemd/system/xiaoxia-cmd-agent.service > /dev/null </dev/null | awk '{print $1}')" echo "端口: 18888" echo "Token: $TOKEN" # 验证 curl -s -H "Authorization: $TOKEN" http://127.0.0.1:18888/status && echo "" || echo "本地验证失败"