busctl收集黑盒日志怎样传参

问题描述

因为业务需要,我需要在lua脚本中启动收集黑盒日志:

image

image624×193 11.6 KB

这样成功创建了收集任务,但任务执行失败:

image

image1070×619 17.7 KB

猜测是我传的参数有问题,请问在脚本中我应该怎么给DumpData传参?

环境信息

基于openubmc 2512_lts

~ ~ $ ipmcget -d version
------------------- openUBMC INFO -------------------
IPMC CPU: Hi1711
IPMI Version: 2.0
Active openUBMC Version: 1.17.10
Active openUBMC Build: 01
Active openUBMC Built: 14:33:07 Mar 27 2026
Backup openUBMC Version: 1.17.10
Available openUBMC Version: 1.00.16
Available openUBMC Build: 01
Active Uboot Version: 21.3.10.1 (09:53:00 Dec 30 2025)
Backup Uboot Version: 21.3.10.1 (09:53:00 Dec 30 2025)
Active Secure Bootloader Version: 21.3.10.1 (09:51:37 Dec 30 2025)
Backup Secure Bootloader Version: 21.3.10.1 (09:51:37 Dec 30 2025)
Active Secure Firmware Version: 21.3.10.1 (09:51:38 Dec 30 2025)
Backup Secure Firmware Version: 21.3.10.1 (09:51:38 Dec 30 2025)
Active BMCSDK Version: 5.12.00.01
----------------- Product INFO -----------------
Product ID: 0x0000
Product Name: Atlas 800I A3
Product Unique ID: 0x000000010302BF02
Active BIOS Version: (U75)21.23
Backup BIOS Version: 21.23

重现步骤

期望结果

收集黑盒日志成功

实际结果

收集黑盒日志失败

尝试过的解决方案

分析结论

传参有问题

检查应该不是填参问题,但任务失败的原因比较多,建议提供一份一键收集方便快速定位,这里先给一些排查建议点:

1.web页面确认黑匣子使能开关已打开

2.开关打开前提下,通过命令行busctl尝试触发是否能导出正常,示例如下:

busctl --usercallbmc.kepler.fault_diagnosis /bmc/kepler/Managers/1/BlackBox bmc.kepler.Managers.BlackBox DumpDataa{ss}s 0 ‘/tmp/blackbox.tar

3.如果命令行可成功,疑点在context参数使用问题,需要看到lua脚本是否能正确获取ctx参数了

@BeanLin,网页上黑匣子功能已经打开并能正常下载blackbox.tar:

context.get_context_or_default()在当前的lua脚本中能正常调用其他的资源数接口,如bmc.kepler.Systems.Processor.NPU的DumpLog,创建的任务成功执行并生成NPU日志。

首先,不同组件接口是有一些安全沙箱权限差别的,因为不知道你的lua实现上下文,所以不能一概而论;

其次,在ssh终端下命令行导出是否可行?这里命令行可行,就证明是你实现的lua上下文问题;

最后可以看下具体通过命令想实现什么?busctl只是一个调试工具,可以通过公共CLI命令也是可以尝试导出的:ipmcget -d blackbox

image

@BeanLin 通过以下代码能正常收集黑盒日志了:

local ok, blackbox_obj = pcall(mdb.get_object, bus,

        '/bmc/kepler/Managers/1/BlackBox',

        'bmc.kepler.Managers.BlackBox')

if not ok or blackbox_obj == nil then

    return false

end
local rsp = blackbox_obj:DumpData(context.get_context_or_default(), ‘/tmp/blackbox.tar’)

感谢提供正确的示例 :+1: