iDRAC Redfish 会话建立
Redfish 用 REST 与 JSON 暴露带外管理资源,Dell iDRAC 的实现从 SessionService 开始:先提交凭据换回会话令牌,再用令牌访问 Systems、Chassis、Managers 等资源,最后删除会话收尾。相比每次请求都带基本认证,会话方式更贴近脚本化批量采集的习惯,也便于把超时与重建会话的逻辑集中处理。
基本信息
| 适用平台 | 支持 Redfish 的 iDRAC 固件版本,越新的固件资源覆盖越完整 |
|---|---|
| 资源根 | /redfish/v1 下的 ServiceRoot,从根开始逐级枚举 |
| 认证方式 | 创建会话得到 X-Auth-Token 请求头,或按需使用基本认证 |
| 常用资源 | Systems、Chassis、Managers、UpdateService、AccountService |
| 权限要求 | 需要具备读取或配置权限的 iDRAC 账号 |
典型使用场景
- 批量巡检:脚本登录若干台机器,统一采集电源、温度与固件字段
- 自动化变更:通过 API 触发重启或固件更新,并用任务资源跟踪结果
- 监控对接:把带外数据接入统一平台,减少人工登录 Web 界面
- 故障取证:在不影响系统运行的前提下读取硬件状态与日志
- 票据核对:用资源里的序列号与资产系统做一致性校验
创建会话并查询资源
创建会话并查询资源
curl -k -s -X POST https://10.0.0.10/redfish/v1/SessionService/Sessions \
-H "Content-Type: application/json" \
-d '{"UserName":"admin","Password":"<口令>"}' -D - # 响应头里取 X-Auth-Token
curl -k -s https://10.0.0.10/redfish/v1/Systems/System.Embedded.1 \
-H "X-Auth-Token: <token>" | head -40 # 读取系统资源
curl -k -s https://10.0.0.10/redfish/v1/Chassis -H "X-Auth-Token: <token>" | head -20 # 机箱与传感器
curl -k -s -X DELETE https://10.0.0.10/redfish/v1/SessionService/Sessions/<id> \
-H "X-Auth-Token: <token>" # 用毕删除会话关键资源说明
| 资源 | 内容 | 注意事项 |
|---|---|---|
| SessionService | 会话创建与删除 | 先创建再访问,避免重复建会话 |
| Systems | 主机、BIOS 与存储信息 | 实例名随固件而不同 |
| Chassis | 机箱、温度与电源 | 传感器字段可交叉验证 SEL |
| UpdateService | 固件仓库与更新任务 | 异步任务需轮询状态 |
调用姿势要点
- 先取 ServiceRoot 再逐级枚举,避免把资源路径写死在脚本里
- 会话令牌按超时时间处理,捕获未授权响应后自动重建会话
- 集合资源可能分页,遍历时读完 Members 再进入下一个集合
- 异步动作要轮询任务资源,拿到终态再判断动作是否成功
字段与资源覆盖范围随固件版本演进,脚本里用容错读取而不是硬编码路径,换固件后才不容易整体失效。
不要把口令与令牌写进脚本正文或提交到代码库,令牌要设过期并在任务结束时删除会话。