通过 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 参考。还没有服务器?选择套餐。
评论
暂无评论。来做第一个吧。