Redfish 电源操作
Redfish 是 DMTF 定义的 RESTful 带外管理接口,现代 iDRAC、iLO、iBMC 都提供。电源控制通过向 ComputerSystem 资源的 Reset 动作发 POST 实现,请求体里用 ResetType 枚举说明要做什么:从礼貌关机到强制断电都在同一个接口里,只是枚举值不同。因为它是纯 HTTP/JSON 调用,很容易接进批量脚本与运维平台,但也意味着一条拼错的枚举值不会「部分成功」,只会得到 400。
基本信息
| 适用设备 | 支持 Redfish 的 BMC:iDRAC、iLO、iBMC 等 |
|---|---|
| 认证方式 | 先创建会话取 X-Auth-Token,或使用 Basic 认证 |
| 系统资源 | /redfish/v1/Systems/System.Embedded.1(厂商命名不同) |
| 动作路径 | /Actions/ComputerSystem.Reset |
| 请求方法 | POST,Content-Type 为 application/json |
| 状态查询 | GET 系统资源查看 PowerState(On/Off) |
典型使用场景
- 批量运维平台统一开关机,不依赖各厂商命令行工具
- 计划维护窗口里执行礼貌关机或礼貌重启
- 卡死无法登录时用强制断电做最后手段
- 自动化交付流程中开机、装机后重启等阶段切换
- 与监控联动:异常检测后按策略触发重启(须有审计与限额)
会话与电源操作
会话与电源操作
# 建立 Redfish 会话,获取 X-Auth-Token
curl -k -s -X POST https://10.0.0.10/redfish/v1/SessionService/Sessions \
-H 'Content-Type: application/json' \
-d '{"UserName":"admin","Password":"<pass>"}' -D -
# 查询当前电源状态,避免盲目发操作
curl -k -s https://10.0.0.10/redfish/v1/Systems/System.Embedded.1 -H 'X-Auth-Token: <token>' | grep -i powerstate
# 执行礼貌重启
curl -k -s -X POST https://10.0.0.10/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset \
-H 'Content-Type: application/json' -H 'X-Auth-Token: <token>' \
-d '{"ResetType": "GracefulRestart"}'
# 强制断电(等效硬操作,业务会直接中断)
# -d '{"ResetType": "ForceOff"}'ResetType 取值与行为
| ResetType | 行为 | 使用注意 |
|---|---|---|
| On | 开机 | 对已开机的系统无效果 |
| GracefulShutdown | 礼貌关机(依赖 ACPI 与 OS 配合) | 系统卡死时可能超时无效 |
| GracefulRestart | 礼貌重启 | 常规维护优先选它 |
| ForceOff | 强制断电 | 等效拔电,可能损坏未落盘数据 |
| ForceRestart | 强制重启 | 等效硬复位 |
| Nmi | 触发不可屏蔽中断 | 用于抓取现场,非通用重启 |
HTTP 状态码是排查的第一线索:401 多见于令牌缺失或过期,400 多为枚举值拼写或字段错误,404 说明资源路径与机型不匹配。
ForceOff 与 ForceRestart 属于硬操作:执行前确认业务可中断并已通知相关方,自动化流程里应对这两个取值单独设审批或限额。