news 2026/6/8 9:40:02

告别WebUI!用Postman玩转服务器BMC:从登录到改BIOS启动顺序的保姆级Redfish API实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别WebUI!用Postman玩转服务器BMC:从登录到改BIOS启动顺序的保姆级Redfish API实战

告别WebUI!用Postman玩转服务器BMC:从登录到改BIOS启动顺序的保姆级Redfish API实战

在数据中心运维的日常工作中,我们常常需要反复登录不同服务器的BMC(基板管理控制器)Web界面,进行用户管理、电源控制或BIOS设置等操作。这种图形界面操作不仅效率低下,还难以实现批量管理和自动化。今天,我将分享如何通过Postman工具,利用Redfish REST API实现服务器管理的全流程自动化,让你彻底告别繁琐的WebUI点击操作。

Redfish是一种基于RESTful架构的服务器管理标准协议,由DMTF(分布式管理任务组)制定。它通过HTTP/HTTPS协议提供对服务器硬件资源的标准化访问接口,覆盖了从电源管理到固件更新的各个方面。与传统的IPMI协议相比,Redfish具有更现代的架构、更好的可扩展性和更丰富的功能集。

1. 环境准备与Redfish基础

1.1 工具与前置条件

在开始之前,我们需要准备以下环境和工具:

  • Postman:主流的API测试工具,支持请求构建、环境变量管理和测试脚本编写
  • 支持Redfish的服务器:大多数现代服务器(如Dell iDRAC、HPE iLO、Lenovo XClarity等)都支持Redfish协议
  • 网络连通性:确保你的工作站可以访问服务器的BMC管理IP

提示:不同厂商的Redfish实现可能略有差异,建议参考具体服务器的Redfish API文档

1.2 Redfish认证机制

Redfish使用基于会话的认证方式,我们需要先获取一个有效的会话令牌(Session Token)。以下是认证流程的关键点:

  1. /redfish/v1/SessionService/Sessions发送POST请求
  2. 在请求体中包含用户名和密码的JSON数据
  3. 从响应头中提取X-Auth-Token作为后续请求的认证凭证
// 登录请求示例 { "UserName": "admin", "Password": "your_password" }

2. 服务器资产管理自动化

2.1 获取服务器资产信息

通过Redfish API,我们可以轻松获取服务器的详细硬件信息,包括:

  • CPU型号和数量
  • 内存配置
  • 存储设备信息
  • 网络接口详情
GET /redfish/v1/Systems/1 Headers: X-Auth-Token: {{token}}

这个请求将返回一个包含丰富硬件信息的JSON响应。我们可以从中提取关键数据,用于资产盘点或监控系统集成。

2.2 批量资产收集方案

对于拥有大量服务器的环境,手动收集资产信息显然不现实。我们可以将Postman集合转化为可执行的脚本,实现自动化资产收集:

  1. 使用Postman的环境变量管理不同服务器的IP地址
  2. 编写JavaScript测试脚本处理响应数据
  3. 将收集到的数据导出为CSV或直接存入数据库
// Postman测试脚本示例 pm.test("Status code is 200", function() { pm.response.to.have.status(200); }); let jsonData = pm.response.json(); console.log("服务器型号: " + jsonData.Model); console.log("处理器数量: " + jsonData.ProcessorSummary.Count);

3. 服务器电源管理实战

3.1 基本电源操作

Redfish提供了完整的电源管理API,支持以下操作:

操作类型请求体参数描述
开机{"ResetType": "On"}正常启动服务器
关机{"ResetType": "GracefulShutdown"}正常关闭服务器
强制重启{"ResetType": "ForceRestart"}立即重启服务器
强制关机{"ResetType": "ForceOff"}立即切断电源
POST /redfish/v1/Systems/1/Actions/ComputerSystem.Reset Headers: X-Auth-Token: {{token}} Content-Type: application/json Body: { "ResetType": "GracefulShutdown" }

3.2 批量电源管理技巧

在数据中心维护窗口期间,经常需要对多台服务器执行统一的电源操作。我们可以利用Postman的Collection Runner功能实现:

  1. 创建一个包含所有服务器IP的环境变量文件
  2. 设置迭代次数为服务器数量
  3. 在测试脚本中添加适当的延迟,避免同时操作造成电源冲击

注意:批量电源操作前,务必确认操作目标,避免误关机影响业务

4. BMC用户管理与网络配置

4.1 用户账号全生命周期管理

Redfish API支持BMC用户账号的创建、查询、修改和删除全流程管理。以下是关键操作示例:

  • 创建用户

    POST /redfish/v1/AccountService/Accounts Body: { "UserName": "new_user", "Password": "SecureP@ss123", "RoleId": "Operator" }
  • 修改用户

    PATCH /redfish/v1/AccountService/Accounts/3 Body: { "Password": "NewP@ss456", "RoleId": "Administrator" }
  • 删除用户

    DELETE /redfish/v1/AccountService/Accounts/3

4.2 BMC网络配置调整

通过API修改BMC网络配置比Web界面更高效,特别是在需要批量调整管理IP时:

PATCH /redfish/v1/Managers/1/EthernetInterfaces/1 Body: { "IPv4Addresses": [ { "Address": "192.168.1.100", "SubnetMask": "255.255.255.0", "Gateway": "192.168.1.1" } ] }

5. BIOS配置与启动顺序调整

5.1 获取当前BIOS设置

在修改BIOS参数前,我们需要先获取当前配置:

GET /redfish/v1/Systems/1/Bios

响应中将包含所有可配置的BIOS参数及其当前值。特别要注意ETag头,它在后续的修改请求中用于并发控制。

5.2 修改启动顺序

调整启动顺序是服务器维护中的常见需求。通过Redfish API,我们可以精确控制每个启动项的顺序:

PATCH /redfish/v1/Systems/1/Bios/Settings Body: { "Attributes": { "BootMode": "Uefi", "BootOrder": ["HardDisk", "PXE", "CDROM"], "SecureBoot": "Enabled" } }

重要:修改BIOS设置后,通常需要重启服务器才能使更改生效

5.3 自动化BIOS配置模板

对于需要统一配置的多台服务器,我们可以创建BIOS配置模板:

  1. 在一台参考服务器上导出理想的BIOS设置
  2. 将配置保存为Postman环境变量或外部文件
  3. 使用脚本批量应用到其他服务器
// 应用BIOS配置模板的Postman脚本 let biosSettings = pm.environment.get("BIOS_Template"); pm.sendRequest({ url: pm.variables.get("baseUrl") + "/Bios/Settings", method: "PATCH", header: { "X-Auth-Token": pm.variables.get("authToken"), "Content-Type": "application/json" }, body: { mode: "raw", raw: JSON.stringify({ "Attributes": biosSettings }) } }, function (err, response) { console.log(response.json()); });

在实际项目中,我发现将常用的Redfish操作封装成Postman集合可以大幅提高运维效率。特别是在处理大规模服务器部署时,API方式比手动Web操作可靠得多。一个实用的技巧是为不同的操作场景创建单独的环境文件,这样可以在测试、预生产和生产环境间快速切换。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 9:30:29

7步掌握SciSpacy:科学文本处理的终极指南

7步掌握SciSpacy:科学文本处理的终极指南 【免费下载链接】scispacy A full spaCy pipeline and models for scientific/biomedical documents. 项目地址: https://gitcode.com/gh_mirrors/sc/scispacy SciSpacy是一个专门为科学和生物医学文本设计的自然语言…

作者头像 李华
网站建设 2026/6/8 9:30:26

MMD框架:非参数统计方法在分布差异量化中的应用

1. MMD框架概述:理解分布差异的统计本质在生成模型和机器学习领域,我们经常面临一个基础性问题:如何量化两个概率分布之间的差异?传统方法如KL散度或JS散度往往需要已知概率密度函数,而这在实际应用中通常是不可得的。…

作者头像 李华
网站建设 2026/6/8 9:29:00

3步搞定!Switch手柄变PC游戏神器的终极解决方案

3步搞定!Switch手柄变PC游戏神器的终极解决方案 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mir…

作者头像 李华