−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

用 REST API 和 curl 管理 VPS:状态、电源、重装、续费

订购服务器后您在控制面板里做的一切——查看状态、重启、读取监控数据、改名、重装系统、续费几个月、取消和撤销取消——都写成可直接复制的 curl 命令,并附真实响应。

通过 API 订购服务器只需一个请求,详见用 4 次 API 调用订购 VPS。本页讲的是之后的一切:平时在控制面板里点来点去的日常操作,写成可以粘贴进脚本的 curl 命令。

下面每条命令都在发布前对我们的 API 实际运行过,响应是返回结果的精简版。

准备

两个变量让命令保持简短:

export API=https://api.eqvps.com/api/v1/eqvps
export EQVPS_TOKEN='paste-your-token-here'

令牌来自 POST /auth/register,或控制面板中的 Settings → API tokens。如果别人也用这台机器,别把它留在 shell 历史里;用 export EQVPS_TOKEN=$(cat ~/.eqvps_token) 从文件读取即可。

找到您的服务器

curl -s $API/services -H "Authorization: Bearer $EQVPS_TOKEN"

每条记录都有一个类似 47HZ7YF 的 id。这是其他所有调用都要用的服务代码。然后是一台服务器的完整信息:

curl -s $API/services/47HZ7YF -H "Authorization: Bearer $EQVPS_TOKEN"
{ "data": {
    "id": "47HZ7YF", "status": "active", "queued": false,
    "product": { "slug": "nano", "name": "Nano" },
    "specs": { "vcpu": 2, "memory_mb": 1024, "disk_gb": 15 },
    "hostname": "agent-box",
    "vm": { "state": "running", "uptime": 5340 },
    "access": { "method": "ssh", "host": "203.0.113.10", "port": 21521, "user": "root", "nat": true, ... } } }

access 告诉您如何登录。在带独立 IPv4 的套餐上端口是 22;在 NAT 套餐上是您的专属转发端口。这个调用只读,循环轮询是安全的。

如果下单时没有提供 SSH 密钥,root 密码只显示一次:

curl -s "$API/services/47HZ7YF?reveal=1" -H "Authorization: Bearer $EQVPS_TOKEN"

服务器还在启动时,响应为 password_pending,一次性显示不会被消耗。等半分钟再问一次。

电源:start、stop、reboot

curl -s -X POST $API/services/47HZ7YF/power \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"action": "reboot"}'

action 为 start、stop 或 reboot。尚未激活的服务器(仍在创建,或因欠费被暂停)会返回 409 Service is not active。这不是您脚本的错误。先检查 status。

监控数据

curl -s "$API/services/47HZ7YF/metrics?timeframe=day" -H "Authorization: Bearer $EQVPS_TOKEN"

以时间序列提供 CPU、内存、网络和磁盘数据。timeframe 为 hour(默认)、day、week 或 month。适合用 cron 任务在磁盘持续增长时提醒您。当前计费周期的流量计数见检查速度和流量。

修改服务器名称

curl -s -X POST $API/services/47HZ7YF/hostname \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"hostname": "web-01"}'

新名称由客户机代理在运行中的系统内生效,Linux 上无需重启。如果服务器已停止,或您删除了 qemu-guest-agent,调用会返回 409 agent_unavailable,什么也不会改变。

重装系统

这会清空磁盘。API 要求您在 confirm 中输入服务器当前的主机名,这样服务 id 写错的脚本就无法误删另一台机器:

curl -s -X POST $API/services/47HZ7YF/reinstall \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"os_id": 4, "confirm": "web-01"}'

os_id 来自 GET /products 中您套餐的 available_os 列表,或服务器自身的详情。重装在后台进行;轮询 GET /services/{id},直到 status 再次变为 active。

续费和余额

服务器每月从预付余额自动续费。查看这台服务器更长期限的价格:

curl -s $API/services/47HZ7YF/renew-options -H "Authorization: Bearer $EQVPS_TOKEN"

一次调用预付比如三个月:

curl -s -X POST $API/services/47HZ7YF/renew \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"months": 3}'

months 为 1、3、6 或 12,12 按带折扣的年付价格计费。响应会显示 paid_from_balance: true 并给出新的到期日。如果余额不够,什么都不会扣:您会收到 paid_from_balance: false 和这张账单的 checkout_url。充值后,POST $API/invoices/{invoice_id}/pay 会用余额支付这张账单;如果仍然不够,它会返回同样的 checkout_url,不扣任何费用。查看余额和充值:

curl -s $API/balance -H "Authorization: Bearer $EQVPS_TOKEN"

curl -s -X POST $API/balance/topup \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"amount": 25}'

充值响应中包含 checkout_url。这是加密货币支付:Base、Ethereum 或 Polygon 上的 USDT、USDC 或 ETH。付款在链上确认后余额到账。付款是脚本唯一无法替您完成的步骤,除非它持有钱包。

也可以用 Monero,但只能作为人工核对的余额充值:您发送 XMR、提交交易 id,我们核实后入账。参见用 Monero 支付。

取消,以及反悔

安全的取消方式会让服务器一直运行到已付周期结束,只是不再续费:

curl -s -X POST $API/services/47HZ7YF/cancel \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "end_of_period", "reason": "moving the project elsewhere"}'

reason 必填,写几个字就行。在日期之前改主意了?

curl -s -X POST $API/services/47HZ7YF/cancel/undo -H "Authorization: Bearer $EQVPS_TOKEN"

还有 "type": "immediate"。它会立即删除服务器及数据,需要 "confirm": "<hostname>",且无法撤销。除非您真的这么想,请使用 end_of_period。

让令牌保持有效

新令牌默认有效一年。每个已认证的响应都带有 X-Token-Expires-At 头,脚本可以提前察觉。把令牌换成新的:

curl -s -X POST $API/auth/token/refresh -H "Authorization: Bearer $EQVPS_TOKEN"

旧令牌会立即失效,所以在做任何其他事之前先保存新令牌。

值得处理的错误

代码含义怎么办
401令牌缺失、已撤销或已过期刷新或新建一个
402只扣余额的操作(例如换套餐)余额不足充值后重复同一调用
409服务器状态不对(尚未激活、操作进行中、没有可撤销的内容)读 message、查 status,稍后重试
422某个字段错误或缺失响应会指出是哪个
429请求过多等待 Retry-After

想用 AI 客户端而不是脚本来做?同样的操作也有 MCP 工具——参见 AI 智能体如何通过 MCP 自己维护 VPS 和 API 参考。还没有服务器?选择套餐。

常见问题

自动化 VPS 需要 MCP 服务器吗?

不需要。MCP 是为 AI 客户端提供的便利;每个 MCP 工具底层调用的都是同一个 REST API。Shell 脚本、cron 任务或 CI 流水线都可以用同一个令牌直接调用 curl。

令牌从哪里获取?

通过 POST /auth/register(智能体自行注册)或在控制面板中:Settings → API tokens。新令牌默认有效期一年;POST /auth/token/refresh 可在过期前换成新令牌。

一条错误的命令会删掉我的服务器吗?

只有两个调用会销毁数据:重装和立即取消。除非在 confirm 字段中重复服务器的准确主机名,否则两者都拒绝执行。重启、停止、改主机名和续费都不会触碰您的文件。

续费怎么付款?

从预付余额扣除。余额足够时服务器每月自动续费;POST /services/{id}/renew 一次调用即可预付 1、3、6 或 12 个月。余额不足时,同一调用不会扣款,而是返回一张带加密货币支付链接的账单。

有请求频率限制吗?

有,按令牌和操作分别限制——例如每分钟 10 次令牌刷新、每分钟 20 个工单。每隔几秒查询一次状态的脚本没问题;在循环里狂刷电源操作的脚本会收到带 Retry-After 的 429。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。