qshell 命令行工具
qshell 命令行工具
qshell sandbox 是用于管理沙箱服务的命令行工具,适合在本地终端、脚本或 CI 流程中创建沙箱、执行命令、查看日志指标、管理模板和注入规则。
相比 SDK,qshell 更适合以下场景:
- 在终端中快速创建沙箱并进入交互式环境
- 在 CI 中创建一次性沙箱执行测试或构建
- 排查线上沙箱的日志、指标和生命周期状态
- 通过脚本批量清理沙箱或模板
- 不编写业务代码,直接验证模板、注入规则和命令执行效果
安装和认证
安装或编译 qshell 后,先配置沙箱服务的 API Key 和服务地址:
export QINIU_API_KEY=sk_***
export QINIU_SANDBOX_API_URL=https://cn-yangzhou-1-sandbox.qiniuapi.com
也可以使用兼容 E2B 的环境变量:
export E2B_API_KEY=sk_***
export E2B_API_URL=https://cn-yangzhou-1-sandbox.qiniuapi.com
QINIU_* 环境变量优先级高于 E2B_*。当前支持的沙箱区域如下:
| 区域 | 区域标识符 | API Endpoint |
|---|---|---|
| 中国(扬州1) | `cn-yangzhou-1` | `https://cn-yangzhou-1-sandbox.qiniuapi.com` |
| 美国(达拉斯1) | `us-south-1` | `https://us-south-1-sandbox.qiniuapi.com` |
Sandbox 命令使用独立 API Key,不依赖 qshell 对象存储命令中的 AK/SK 账号配置。只有在管理密钥注入规则或挂载 Kodo bucket 资源等需要七牛签名鉴权的场景下,才需要 qshell 当前账号或 QINIU_ACCESS_KEY / QINIU_SECRET_KEY。
命令和别名
qshell sandbox 的主命令结构如下:
qshell sandbox <子命令>
qshell sbx <子命令>
完整命令和别名如下:
| 完整命令 | 别名 | 说明 |
|---|---|---|
| `sandbox` | `sbx` | 沙箱命令入口 |
| `sandbox list` | `sbx ls` | 列出运行中或已暂停的沙箱,支持状态、元数据和数量过滤 |
| `sandbox create` | `sbx cr` | 创建沙箱,可进入交互式终端或使用后台模式 |
| `sandbox connect` | `sbx cn` | 连接到已有沙箱终端 |
| `sandbox exec` | `sbx ex` | 在沙箱中执行命令,支持前台、后台、stdin、工作目录、用户和环境变量 |
| `sandbox kill` | `sbx kl` | 终止一个或多个沙箱,支持按状态和元数据批量清理 |
| `sandbox pause` | `sbx ps` | 暂停一个或多个运行中的沙箱 |
| `sandbox resume` | `sbx rs` | 恢复一个或多个已暂停的沙箱 |
| `sandbox logs` | `sbx lg` | 查看沙箱日志,支持级别、logger、持续跟踪和 JSON 输出 |
| `sandbox metrics` | `sbx mt` | 查看沙箱资源指标,支持持续跟踪和 JSON 输出 |
| `sandbox template` | `sbx tpl` | 沙箱模板命令入口 |
| `sandbox template list` | `sbx tpl ls` | 列出沙箱模板 |
| `sandbox template get` | `sbx tpl gt` | 查看模板详情和构建记录 |
| `sandbox template delete` | `sbx tpl dl` | 删除一个或多个模板,支持交互式选择 |
| `sandbox template build` | `sbx tpl bd` | 创建并构建模板,或重新构建已有模板 |
| `sandbox template builds` | `sbx tpl bds` | 查看指定模板构建的状态和日志 |
| `sandbox template publish` | `sbx tpl pb` | 发布模板,将模板设为公开 |
| `sandbox template unpublish` | `sbx tpl upb` | 取消发布模板,将模板设为私有 |
| `sandbox template init` | `sbx tpl it` | 初始化模板项目脚手架 |
| `sandbox injection-rule` | `sbx ir` | 密钥注入规则命令入口 |
| `sandbox injection-rule list` | `sbx ir ls` | 列出注入规则 |
| `sandbox injection-rule get` | `sbx ir gt` | 查看注入规则详情 |
| `sandbox injection-rule create` | `sbx ir cr` | 创建注入规则 |
| `sandbox injection-rule update` | `sbx ir up` | 更新注入规则 |
| `sandbox injection-rule delete` | `sbx ir dl` | 删除一个或多个注入规则,支持交互式选择 |
查看帮助:
qshell sandbox -h
qshell sandbox --doc
qshell sandbox create --doc
qshell sandbox template build --doc
快速开始
列出可用模板:
qshell sandbox template list
创建沙箱并进入交互式终端:
qshell sandbox create <template-id>
使用短别名:
qshell sbx cr <template-id>
交互式终端退出后,qshell 会自动终止本次创建的沙箱。如果希望创建后不进入终端,使用 --detach:
qshell sandbox create <template-id> --timeout 300 --detach
命令会输出沙箱 ID,后续可以用这个 ID 连接、执行命令或清理资源:
qshell sandbox exec <sandbox-id> -- python --version
qshell sandbox logs <sandbox-id>
qshell sandbox kill <sandbox-id>
推荐工作流
本地调试模板:
qshell sandbox template build --name demo --dockerfile ./Dockerfile --wait
qshell sandbox create <template-id> --timeout 600 --detach -m app=demo,env=dev
qshell sandbox exec <sandbox-id> -- sh -lc 'python --version && pwd'
qshell sandbox logs <sandbox-id> --follow
qshell sandbox kill <sandbox-id>
CI 中运行测试:
SANDBOX_ID="$(qshell sandbox create <template-id> --timeout 300 --detach -m app=ci | awk '/Sandbox ID:/ {print $3}')"
qshell sandbox exec "${SANDBOX_ID}" -- sh -lc 'pytest -q'
qshell sandbox kill "${SANDBOX_ID}"
按元数据清理调试资源:
qshell sandbox kill --all --state running,paused -m app=demo,env=dev
专题文档
qshell sandbox 的详细用法拆分为以下专题:
| 文档 | 内容 |
|---|---|
| `使用 qshell 管理沙箱实例` | 创建、连接、列出、暂停、恢复、终止沙箱 |
| `使用 qshell 执行沙箱命令` | 前台命令、后台命令、stdin、工作目录、用户和环境变量 |
| `使用 qshell 管理沙箱模板` | 模板初始化、构建、查询、发布、删除 |
| `使用 qshell 管理密钥注入` | 注入规则、内联注入,支持七牛 AI、GitHub、自定义 HTTP 等配置 |
| `使用 qshell 排查沙箱问题` | 日志、指标、创建失败、连接失败、构建失败、资源清理 |
文档反馈
(如有产品使用问题,请 提交工单)