跳转到内容

Server API

EasyShell 服务器在端口 18080 上暴露 RESTful API。除非另有说明,所有端点均需要身份认证。

所有 API 请求必须包含通过登录端点获取的有效会话令牌。

Terminal window
# 登录并获取令牌
curl -X POST http://localhost:18080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin123"}'

响应:

{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9...",
"user": {
"id": 1,
"username": "admin",
"role": "ADMIN"
}
}
}

在后续请求中携带令牌:

Terminal window
curl -H "Authorization: Bearer <token>" http://localhost:18080/api/hosts
GET /api/hosts

查询参数:

参数类型默认值说明
pagenumber0页码(从零开始)
sizenumber20每页数量
searchstring按主机名或 IP 过滤
statusstring按状态过滤:ONLINEOFFLINEWARNING
clusterIdnumber按集群 ID 过滤
GET /api/hosts/{id}

返回主机信息,包括系统信息、Agent 状态、资源指标和标签。

POST /api/hosts
{
"hostname": "web-server-01",
"ip": "192.168.1.100",
"sshPort": 22,
"authType": "PASSWORD",
"username": "root",
"password": "...",
"tags": { "env": "production", "role": "web" }
}
DELETE /api/hosts/{id}
GET /api/scripts

查询参数:

参数类型说明
pagenumber页码
sizenumber每页数量
typestring脚本类型:BASHPYTHONPOWERSHELL
categorystring分类过滤
POST /api/scripts
{
"name": "Check Disk Usage",
"description": "Reports disk usage across all mounted filesystems",
"type": "BASH",
"content": "#!/bin/bash\ndf -h | grep -v tmpfs",
"timeout": 30,
"tags": ["monitoring", "disk"]
}
POST /api/scripts/{id}/execute
{
"hostIds": [1, 2, 3],
"params": {
"threshold": "80"
},
"async": true
}

响应:

{
"code": 200,
"data": {
"taskId": "task_20260220_001",
"status": "RUNNING",
"hostCount": 3
}
}
GET /api/tasks/{taskId}

返回任务总体状态和每台主机的执行结果。

GET /api/tasks/{taskId}/logs

查询参数:

参数类型说明
hostIdnumber按指定主机过滤日志
followboolean实时流式传输日志(SSE)
GET /api/clusters
POST /api/clusters
{
"name": "Production Web Servers",
"description": "All production web server instances",
"hostIds": [1, 2, 5, 8]
}
POST /api/clusters/{id}/execute
{
"scriptId": 10,
"params": {},
"strategy": "PARALLEL"
}

执行策略:

策略说明
PARALLEL在所有主机上同时执行
SEQUENTIAL逐台执行,失败时停止
ROLLING分批执行,可配置批次大小
GET /api/users
POST /api/users
{
"username": "operator",
"password": "securePassword123",
"role": "OPERATOR",
"email": "[email protected]"
}

所有 API 响应遵循统一格式:

{
"code": 200,
"message": "success",
"data": { ... }
}

错误响应:

{
"code": 400,
"message": "Validation failed",
"errors": [
{ "field": "hostname", "message": "must not be blank" }
]
}

常用 HTTP 状态码:

状态码含义
200成功
201已创建
400请求错误 — 验证失败
401未授权 — 令牌缺失或无效
403禁止访问 — 权限不足
404未找到
500服务器内部错误