# 连接正在运行的沙箱
<subtitle>通过沙箱 ID 连接已有沙箱，并继续使用 SDK 控制它。</subtitle>

如果已有一个正在运行的沙箱，可以使用 `Sandbox.connect()` 方法连接到它，并继续通过 SDK 控制该沙箱。

这适用于需要在短暂空闲后复用同一个沙箱实例的场景，例如同一个用户会话、同一个远程开发环境或同一个长期任务。

## 1. 获取沙箱 ID

要连接到正在运行的沙箱，首先需要获取它的沙箱 ID。可以通过 `Sandbox.list()` 方法查询。

```python
from ucloud_sandbox import Sandbox

sbx = Sandbox.create()

# 获取沙箱列表
paginator = Sandbox.list()

running_sandboxes = paginator.next_items()
if len(running_sandboxes) == 0:
    raise Exception("未找到可连接的沙箱")

# 获取要连接的沙箱 ID
sandbox_id = running_sandboxes[0].sandbox_id
```

更多列表查询方式请参考 [沙箱列表](/docs/agent-sandbox/sdk/sandbox/list.md)。

## 2. 连接到沙箱

拿到沙箱 ID 后，可以使用 `Sandbox.connect()` 连接到该沙箱。

```python
from ucloud_sandbox import Sandbox

sandbox = Sandbox.connect(sandbox_id)

# 连接后可以像平常一样使用沙箱
result = sandbox.commands.run("whoami")
print(f"Running in sandbox {sandbox.sandbox_id} as \"{result.stdout.strip()}\"")
```
