用途:
建议端口:50000
{
"protocol_version": 1,
"message_type": "discover",
"request_id": "6f7d2f6a-1111-2222-3333-444455556666",
"client_name": "WIN-PC-01"
}
{
"protocol_version": 1,
"message_type": "discover_response",
"request_id": "6f7d2f6a-1111-2222-3333-444455556666",
"device_id": "SN202605070001",
"hostname": "ubuntu-server-01",
"server_version": "1.0.0",
"lan2_ip": "169.254.100.2",
"auth_required": true
}
Base URL:
http://169.254.100.2:48888
启动参数:
--ip:指定维护地址,默认 169.254.100.2--port:指定 HTTP 端口,默认 48888--password:指定管理密码,默认 Dt123$请求头:
Content-Type: application/json
X-Admin-Password: Dt123$
当前实现说明:
Dt123$--password 启动参数覆盖{
"code": 0,
"message": "成功",
"data": {}
}
0:成功1001:缺少密码1002:密码错误2001:参数错误2002:资源不存在3001:配置校验失败3002:配置应用失败3003:配置失败,已回滚3004:回滚失败4001:系统执行失败GET /api/health
响应:
{
"code": 0,
"message": "成功",
"data": {
"status": "运行中",
"server_version": "1.0.0"
}
}
GET /api/device/info
响应:
{
"code": 0,
"message": "成功",
"data": {
"device_id": "SN202605070001",
"hostname": "ubuntu-server-01",
"os_version": "Ubuntu 24.04",
"server_version": "1.0.0",
"uptime_seconds": 86400
}
}
GET /api/network/interfaces
响应:
{
"code": 0,
"message": "成功",
"data": {
"management_interface": "enp2s0",
"suggested_target_interface": "enp1s0",
"requires_target_selection": false,
"interfaces": [
{
"name": "LAN1",
"system_name": "enp1s0",
"role": "business",
"link_up": true,
"is_management_interface": false,
"is_suggested_target": true,
"mac": "00:11:22:33:44:55",
"ipv4": [
{
"address": "192.168.10.20",
"prefix": 24,
"source": "static"
}
],
"gateway": "",
"dns": []
},
{
"name": "LAN2",
"system_name": "enp2s0",
"role": "control",
"link_up": true,
"is_management_interface": true,
"is_suggested_target": false,
"mac": "00:11:22:33:44:66",
"ipv4": [
{
"address": "169.254.100.2",
"prefix": 16,
"source": "static"
},
{
"address": "192.168.8.23",
"prefix": 24,
"source": "dhcp"
}
],
"gateway": "192.168.8.1",
"dns": ["192.168.8.1"]
}
]
}
}
说明:
management_interface 为当前管理连接所在真实接口名suggested_target_interface 为当前建议操作的真实接口名requires_target_selection 为 true 时,客户端应要求用户选择目标接口name 为逻辑展示标识,实际配置应使用 system_nameGET /api/network/config?interface=enp1s0
响应:
{
"code": 0,
"message": "成功",
"data": {
"interface": "enp1s0",
"ip": "192.168.10.20",
"prefix": 24,
"gateway": "",
"dns": []
}
}
POST /api/network/validate
请求:
{
"interface": "enp1s0",
"ip": "192.168.10.20",
"prefix": 24,
"gateway": "",
"dns": []
}
正常响应:
{
"code": 0,
"message": "校验通过",
"data": {
"valid": true,
"warnings": []
}
}
带警告响应:
{
"code": 0,
"message": "校验通过",
"data": {
"valid": true,
"warnings": [
"目标接口使用的是链路本地地址,通常仅适合同链路通信。"
]
}
}
失败响应:
{
"code": 3001,
"message": "配置校验失败",
"data": {
"valid": false,
"errors": [
"网关与目标接口 IP 不在同一子网。"
]
}
}
校验规则:
ip 必填prefix 必填gateway 选填dns 选填interface 必填,必须是有效的真实接口名gateway,必须与 ip 在同一子网ip 为 169.254.x.x,返回中文警告,不直接报错POST /api/network/apply
请求:
{
"interface": "enp1s0",
"ip": "192.168.10.20",
"prefix": 24,
"gateway": "",
"dns": []
}
响应:
{
"code": 0,
"message": "配置任务已提交",
"data": {
"interface": "enp1s0",
"task_id": "task-20260507-0001"
}
}
说明:
apply 返回的是“任务创建结果”interface 和 task_idGET /api/tasks/{task_id} 获取执行流程:
netplannetplan applyPOST /api/network/rollback
请求:
{
"interface": "enp1s0"
}
响应:
{
"code": 0,
"message": "回滚成功",
"data": {
"interface": "enp1s0",
"rolled_back": true
}
}
GET /api/tasks/{task_id}
进行中响应:
{
"code": 0,
"message": "任务执行中",
"data": {
"task_id": "task-20260507-0001",
"status": "running",
"step": "applying",
"detail": "正在应用 netplan 配置。",
"rollback": false
}
}
成功响应:
{
"code": 0,
"message": "配置成功",
"data": {
"task_id": "task-20260507-0001",
"status": "success",
"step": "completed",
"detail": "目标接口配置已成功应用。",
"rollback": false
}
}
失败并回滚响应:
{
"code": 3003,
"message": "配置失败,已自动回滚",
"data": {
"task_id": "task-20260507-0001",
"status": "rolled_back",
"step": "rolling_back",
"detail": "网关不可达,已恢复到上一次稳定配置。",
"rollback": true
}
}
状态建议:
pendingrunningsuccessfailedrolled_back步骤建议:
validatingwriting_netplanapplyingverifyingrolling_backcompletedPOST /api/system/reboot
请求:
{}
响应:
{
"code": 0,
"message": "重启命令已接受",
"data": {
"accepted": true
}
}
POST /api/system/shutdown
请求:
{}
响应:
{
"code": 0,
"message": "关机命令已接受",
"data": {
"accepted": true
}
}
每个 HTTP 请求统一按以下顺序处理:
169.254.100.2X-Admin-Password当前实现补充: